#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.