全国咨询/投诉热线:400-618-4000

c++培训之基础变量

更新时间:2016年07月21日17时42分 来源:传智播客C/C++学科 浏览次数:

变量

变量声明定义

声明不分配存储空间,定义分配存储空间,广义上讲定义是声明的一种特殊形式。

不同类型常量的表示

10 整型
10l   10L 长整型
10ll    10LL   长长整型
10ul 10UL 无符号长整型
10ull 10ULL 无符号长长整型
010 八进制8
0x10 十六进制16

整型变量的取值范围

在计算机中数是以补码的形式存在的,纠其原因是为了方便进行运算。正数的补码和原码相同,负数的补码等于其绝对值的原码取反后加1(符号位保持不变)。下面就来说明为什么用补码方便运算:
以8位2进制数来举例说明,对于8位有符号2进制数,最高位为符号位,设N为负数,
|N|为正数且|N| >= 1N的补码为
N的补码 = 2^7 + 2^7 - 1 - |N| + 1 = 2^7 + 2^7 - |N|
M为正数,
在计算机中N+M实际上等于N的补码+M
2^7 + 2^7 - |N| + M = 2^7 + 2^7 + (M - |N|)
1)如果M > |N|,那么最终运算结果为M - |N|,符号位从1变为0,这是因为N的符号位等于1,可表示为1000 0000 = 2^7,当再加上2^7后,将变为0,即
  
1000 0000
+   1000 0000
              
=   10000 0000,1被舍弃了
2)如果M < |N|,那么最终运算结果为2^7 + 2^7 - (|N| - M),即等于-(|N| - M)的补码,也就是-(|N| - M)了。
3)如果M = |N|,那么最终运算结果为0,溢出位被舍弃了,这与M > |N|的情况类似。
M也为负数的时候,虽然符号位相加,最高位变为0,但由于非符号位相加也存在溢出现象,符号位又变回了1,即负数加上负数还是负数,这是合理的。用公式表示如下,
N的补码 + M的补码 = 2^7 + 2^7 - |N| + 2^7 + 2^7  - |M| = 2^7 + 2^7 - (|N| + |M|)
即等于-(|N| + |M|)的补码。
当然正数与正数相加就很好理解了。
通过以上分析,我们可知在计算机中使用补码进行运算,是很方便的,即使得计算机可以像普通的四则运算一样进行加减乘除等运算。

本文版权归传智播客C++培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客C/C++培训学院
首发:http://www.itcast.cn/c/