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

发布网友

我来回答

3个回答

热心网友

答案是D.-1.
int其实为unsigned int x=65535
然后呢
转成2进制呗,16个1咯
再然后呢
你又要变成整型,计算机咋办呢??
求补码呗
补码怎么求?
取反加1呗,怎么取反呢
第一个1是不变的,然后后面15个都变成了0,然后加1
就变成了1,14个0,1
再然后计算机输出
因为你的是无符号的,所以只给你15位,后面的15位,就是14个0,跟1
然后第1位干嘛去了呢?他变成横的1了,就这样,变成-1~~

热心网友

这个题要分两种情况考虑。在16编译系统(如TC)中,结果是-1;在32编译系统(如VC)中,结果是65535。追问能解释下原因吗?

追答16位进制与32位二进制表示的范围不同。65535存储在16位的存储器中,溢出,刚好是-1的补码。存储在32位的存储器中不溢出,原样输出。

热心网友

A 没越界追问怎么谭浩强编的那本c语言书上说int是signed int

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com