CPP学习之——整型变量的定义(4.9)

一 前言

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 输出结果

1
2
a:32767
b:-32768

4.3 结论

  • 从该程序中,我们看出整型数据溢出后不会报错,而是像汽车里程表那样,达到最大值后,又从最小值开始计数。因此我们需要时刻注意所定义变量的最大取值范围,一定不要超过这个范围进行赋值。