void main() { unsigned int a=65535; printf("%u,%d",a,a); } 在tc20中运行结果为 65535,-1,而在

日期:2011-09-27 22:25:13 人气:2

void main() { unsigned int a=65535; printf("%u,%d",a,a); } 在tc20中运行结果为 65535,-1,而在

二字节编码在内存中的形态是0xFFFF的话,被解释成有符号的话就是-1, 无符号为65536. 二的补码它是把编码分成两个区间,0x0000 - 0x7FFF是正区间,0x8000-0xFFFF是负区间.0x8000是最小的负数, -32768, 越靠近0xFFFF,负数约大,0xFFFF是最大的负数-1. 所以一个编码被解释成什么是程序员的事情,数据在物理内存中的形式是不变的 说明TC20中,unsigned int是16位的,而cfree3.5是32位.
    A+
热门评论