实验目的:
理解C语言中如何计算补码,掌握“矛盾”赋值时如何处理数据。
实验步骤:
1.验证没有赋值的变量的值是“随机的”。
1.1在VC6.0没有赋值的整型变量其存储单元中每个字节都是0xcc。如程序
#include <stdio.h>
void main()
{
long i;
short j;
printf("%lx,%hx\n", i, j);
}
的输出为:cccccccc,cccc。
但是这只是vc6.0为了方便观测数据主动为程序中的变量设置的状态。
1.2在Win-TC可以清楚地看出,没有赋值的变量的值是“随机的”。
2.计算机中处理整型字面量的方式。
2.1计算机中存储整数的补码形式,因此遇到整型字面量时会首先将其转换为补码形式,但是需注意其转换方法。
遇到正数,正数的补码形式与原码的相同,直接将其转换成二进制形式即可。如65535将被转换成1111 1111 1111 1111或(认为其类型是长整型)被转换成0000 0000 0000 0000 1111 1111 1111 1111(0xffff);0x80000001将被转换成1000 0000 0000 0000 0000 0000 0000 0001(0x80000001)。
遇到负数,先忽略负号将其转换成二进制形式,再取反,最后加1即得到了补码形式。如-6