c语言:下列程序执行后的输出结果是-1为什么?

36下列程序执行后的输出结果是-1为什么?main(){charx=0xFFFF;printf("%d\n",x--);}charx=0xFFFF是什么意思37若有定义:... 36
下列程序执行后的输出结果是-1为什么?
main() { char x=0xFFFF; printf("%d \n",x--); }

char x=0xFFFF是什么意思
37若有定义: float w; int a,b; 则合法的switch语句是c。为什么?其他3项哪里错了?
a
switch(w)
{ case1.0:printf("*\n");
case2.0;printf("**\n");
}}
b
switch(a)
{ case1.0:printf("*\n");
case2.0;printf("**\n");
c
switch(b)
{ case1:printf("*\n");
default:printf("\n");
case 1+2:printf("**\n");
} }

d
switch(a+b);
{ case 1: printf("*\n");
case 2: rpintf("**\n")
default:printf("\n");
展开
 我来答
百度网友ba35e7811
2006-04-03 · TA获得超过213个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:0
展开全部
36 输出:-1

x=0xFFFF 如果用十六进制表示的话,数前面要加0x以表示是十六进制。
FFFF用二进制表示就是16个1,1111111111111111,转换成十进制就是2^16-1,即65535。因为INT型数据范围是+32767~-32768,二进制在计算机中表示时,第一位是符号位(这些知识如果学了原码、补码、反码就会了解了),65535超了范围,第一位变成了符号位,1代表负数,所以变成了-1
X--是X先计算,再减一,所以先输出-1,X的值再减一,变成-2.

37
A case后面不能是实型
B a是整形,case后面是实型
D swith()括号里面不能是表达式
好好吃饭2024
2006-04-03 · TA获得超过817个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:140万
展开全部
-1在计算机中的编码就是0xFFFF;
switch中的case x;
x只能是正整数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9e18ad2b7
2006-04-03
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
计算机中数都是以补码形式存在的,0xFFFF就是-1的补码,另外这次程序是switch结构的,所以x应为正整数,你所说的另外3项是不需要输出的,因为有default阿!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
负家子弟
2006-04-03 · TA获得超过3567个赞
知道大有可为答主
回答量:1336
采纳率:0%
帮助的人:1473万
展开全部
对于char型来说0xFFFF就是-1,而x--是现输出后作自减操作,所以输出-1.

对于switch...case结构来讲,
switch (表达式1) 中的表达式1必须返回一个整型;
case 表达式2 中的表达式2也必须是整型;

综上所述只有c是正确的(d case 2少了个分号、printf拼写错误、switch()后面多了个分号)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式