问一下C语言进制转换的问题
我按照书上的联系做,变成如下:
#include <stdio.h>
main()
{
int n=-1;
printf("%d\n",n);//值应该是-1
printf("%u\n",n);//unsigned型数据,输出结果应该为65535
printf("%x\n",n);//16进制输出,结果应为ffff
printf("%X\n",n);//16进制输出,结果应为FFFF
printf("%o\n",n);//8进制输出,结果应为177777
}
按理论来说,输出的应该是//后面的结果,可是我的真实结果却是:
-1
4294967295
ffffffff
FFFFFFFF
37777777777
请问,出现该状况的问题在哪里?是我打错了?还是?
谢谢
这些语句的运算结果由字长来决定,因为int型占用一个字长的内存。
C语言的教材一般是假定字长为16位,因为老的CPU为16位。
现在的CPU是32位或64位的。
由你这个计算结果来神旦槐看你的迟袭计算机应该是32位的。游友
你用的是VC6++编译的吧,他的int类型和long类大早闹型都是32位的。如果你用TC2.0编译的就和书上的结果一样。
和64位系统无关,主要取决于编滚罩译睁粗器。
书是多老的书啊…段樱老…
你的结果是对的,只颂启是和握升书上的int所占的内存大小不一样,书上是16位的,你的是32位的,没有问题。
应该是系统问题你的系统是64位?