C语言题目。答案是C.不明白为什么。求解释,谢谢!
3个回答
2014-02-11
展开全部
前面定义char类型,后面直接输出整型,-1是异常,你对x进行任何加减乘除都是-1
更多追问追答
追问
哦~假如一开始就把x定义成int,那再打印出来的是-32767么?
追答
还是65535因为那是后减减,要运算一次才生效,已经输出了,又不循环所以那个等于没用。。。
展开全部
0x表示十六进制,char只有8bit,只储存ff(11111111),最高为是符号位,为1表示负数,将ff减一再取反得到1,所以结果为-1
追问
为1为什么表示负数啊?还有将ff减一再取反怎么就得到1了?
追答
有符号的变量,最高位表示符号,0表示正数,1表示负数。负数在内存中以其补码表示,即将其绝对值去反后再加1。所以最高位为1时,说明是负数,减1再取反就得到绝对值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询