#2179. C++-编译-程序输出一个很奇怪的数,可能是因为使用变量时超出它的范围...
C++-编译-程序输出一个很奇怪的数,可能是因为使用变量时超出它的范围...
Background
Description
程序输出一个很奇怪的数,可能是因为使用变量时超出它的范围,也可能是定义变量/数组时没有赋予初值
i.超出变量范围
比如(大多数电脑)int类型的范围是-2147483648~2147483647
这是因为在现在的主流计算机系统中,int类型占4个字节(也就是32位),除了第一位需要表示变量的正负以外,剩下的31位用来表示数据,最多可以表示2^31个数(含0),2^31=2147483648
实际编程中int类型不够的话可以更改为long long,float不够可以改为double甚至long double(不过会占用更多内存)
ii.定义时未赋初值
C/C++在定义变量时只是给了一块空间,而不会对这块空间清扫。也就是说未给初值的变量的值取决于它这块空间的上一位“住户”是谁。
建议是在定义时便赋予初值:
int a=0; //对变量赋初值
int a[100]={0}; //对数组批量赋初值,注意只能定义时使用
此外,还可以使用memset函数(要加<string.h>头文件)来清空数组的内容:
#include<string.h>
int a[100];
memset(a,0,sizeof(a)); //函数中三个位置的意义为:对a数组,每个比特上赋0,长度为a数组的大
Format
Input
Output
Samples
Limitation
1s, 1024KiB for each test case.