请教
#include<stdio.h>
void main()
{
char c;int i;
c=43;i=c;
printf("i=%d\n",i);
c='\376';i=c;
printf("i=%d\n",i);
}
为什么第二次i的输出是-2,搞不懂,请指教
问题点数:50、回复次数:7Top
1 楼fancyf(凡瑞)回复于 2005-06-02 19:18:33 得分 0
c=11111110=-2
Top
2 楼nasi00(莫傲·逍遥)回复于 2005-06-02 19:30:40 得分 0
你想让他输出多少?Top
3 楼mostideal(三甲)回复于 2005-06-02 22:40:09 得分 0
你认为结果是多少呀。。Top
4 楼zhagnujn(艺海拾贝)回复于 2005-06-03 09:11:10 得分 0
为什么会是c=11111110=-2
我知道存的是ASCII码,但为什么会是c=11111110=-2?
可以详细说明一下吗?谢谢Top
5 楼mccxj(老鼠不逛街)回复于 2005-06-03 09:15:46 得分 0
11111110
因为是补码形式。。由于前面是1。。所以是负数。。还记得负数取补码是取反加1把。。到过来就是-1取反把。。呵呵。。就是00000010。。就是2了。。而它前面已经说是个负数了。。所以就是-2咯。。Top
6 楼wlfc(tongan)回复于 2005-06-03 09:24:44 得分 50
在C/C++中,字符可当作整数使用,但是有符号整数,取值范围是-128~127,将一个整数赋给一个字符时,超过这个范围就要进行转换,11111110是\376转换后的值,可能是补码表示,其值为-2。
Top
7 楼clear117(小风)回复于 2005-06-03 09:40:38 得分 0
哈哈 我在AIX Version 5运行的结果是
i=43
i=254
Top




