若x为int 变量,则执行下列语句x的值为() x=65535; printf(“%d\n”,x); A.65535 B.1 C.无定值 D.-1

问题描述:

若x为int 变量,则执行下列语句x的值为() x=65535; printf(“%d\n”,x); A.65535 B.1 C.无定值 D.-1

这个题要分两种情况考虑.在16编译系统(如TC)中,结果是-1;在32编译系统(如VC)中,结果是65535.能解释下原因吗?16位进制与32位二进制表示的范围不同。65535存储在16位的存储器中,溢出,刚好是-1的补码。存储在32位的存储器中不溢出,原样输出。