一 前言 C++的变量都必须定义后才能使用,定义的作用是告诉编译器该变量占据多少字节,以便于分配内存。而赋值是将数值存储到该内存空间中。接下来我们看如何定义一个整形变量。
二 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 #include<iostream> using namespace std; int main() { int a=-1; unsigned b=-2; short c=-3; long d=-4; unsigned long e; e=a+b+c+d; cout<<"a:"<<a<<"\n"<<"b:"<<b<<"\n"<<"c:"<<c<<"\n"<<"d:"<<d<<"\n"<<"e:"<<e<<endl; return 0; }
三 输出结果 说明 3.1 输出结果 1 2 3 4 5 a:-1 b:4294967294 c:-3 d:-4 e:4294967286
3.2 输出说明
由于有符号的整型变量a可以保存负数,所以输出a的值为-1
由于无符号整型变量不能存储负数,因此输出的b的值不是-2,而是4294967294
至于为什么是4294967294,我们将其换算成二进制就明白了
4294967294的二进制位11111111111111111111111111111110,该数正式有符号整型数-2的二进制表现形式。
四 超过取值范围导致的溢出 4.1 代码 1 2 3 4 5 6 7 8 9 10 #include<iostream> using namespace std; int main() { short a,b; a=32767; b=a+1; cout<<"a:"<<a<<"\n"<<"b:"<<b<<endl; return 0; }
4.2 输出结果
4.3 结论
从该程序中,我们看出整型数据溢出后不会报错,而是像汽车里程表那样,达到最大值后,又从最小值开始计数。因此我们需要时刻注意所定义变量的最大取值范围,一定不要超过这个范围进行赋值。