这个问题简单,tc20里面定义int是2个字节的,cfree3.5定义的int是4个字节的
%d是以有符号的格式输出,%u是以无符号的格式输出,有符号的数是以最高位表示正负的,0为正,1为负
先说tc20,1表示为二进制是:
00000000 00000001
-1表示为:
111111111 11111111 //1取反码再+1
表示为无符号就是65535了
cfree3.5同理,1表示为二进制是:
00000000 00000000 00000000 00000001
-1表示为:
11111111 11111111 11111111 11111111
表示为无符号就是4294967295了
这个 与编译器有关系,记住 有的是int占据的位数不同tc20 int类型占据2个字节 cfree3.5 占据4个字节。不过这个结果是真确的“该程序在cfree3.5中运行该程序,出现结果:-1,4294967295 ” 你应该知道数据是以二进制进行存储的:首先 int a=-1;计算机是这样进行处理的。“按位取反再加1” 存储在内存中。及以下:
11111111 11111111 11111111 11111111 当 输出是带符号时:再按。“最高位负按位取反再加1” 结果就是 -1 ;当为无符号输出是:结果就是:上吗的二进制换成十进制数:4294967295;
1、unsigned a=5默认等价于unsigned int a=5
2、如果是16位系统,那么就如楼主所想了。可以使用unsigned short试试。
3、由于65535在unsigned short可表示范围之内,所以结果还是65535.
如果65536则结果为0;65537结果为1