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"); 展开
下列程序执行后的输出结果是-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"); 展开
展开全部
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()括号里面不能是表达式
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()括号里面不能是表达式
展开全部
-1在计算机中的编码就是0xFFFF;
switch中的case x;
x只能是正整数
switch中的case x;
x只能是正整数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算机中数都是以补码形式存在的,0xFFFF就是-1的补码,另外这次程序是switch结构的,所以x应为正整数,你所说的另外3项是不需要输出的,因为有default阿!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于char型来说0xFFFF就是-1,而x--是现输出后作自减操作,所以输出-1.
对于switch...case结构来讲,
switch (表达式1) 中的表达式1必须返回一个整型;
case 表达式2 中的表达式2也必须是整型;
综上所述只有c是正确的(d case 2少了个分号、printf拼写错误、switch()后面多了个分号)
对于switch...case结构来讲,
switch (表达式1) 中的表达式1必须返回一个整型;
case 表达式2 中的表达式2也必须是整型;
综上所述只有c是正确的(d case 2少了个分号、printf拼写错误、switch()后面多了个分号)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询