我正在使用VS 2012,而我正在读这本教授C\C++基础的书.这本书很老了,它不是在VS中教,而是在Borland C++中教.本课程教授如何将无符号值转换为int
.在书中,它表示int
数字的值为-32768和32767,无符号的值为0到65535.在书中给出了数字42000,并显示为unsigned
42000和int
-23536.在VS中,它显示了as unsigned
和int
42000.
#includevoid main(void) { unsigned int value = 42000; printf("Show 42000 as unsigned %u\n", value); printf("Show 42000 as int %d\n", value); }
输出:
Show 42000 as unsigned 42000 Show 42000 as int 42000
附注:尝试都%d
和%i
; 没用.
你的旧书给出了16位int
和16位的范围unsigned
.较新的编译器使用以太网32位或64位.
a的最小范围int
是-32767到+32767,因为它可能是1的补码16位数.
未指定最大范围.
VS通常使用32位2的补码值int
.
顺便说一句,使用%d
for 的行为unsigned
是未定义的.如果您编写并编译代码,则编译器保留吃猫的权利.如果该书使用了该构造并声称它是便携式的,那么再次刻录它.