编程论坛's Archiver

tcjian 发表于 2008-7-20 18:55

]求助 char a=1025;printf("%d",a); 输出结果为什么是1.????

求助  char a=1025;printf("%d",a); 输出结果为什么是1.????

qxykzx 发表于 2008-7-20 20:13

我是这样想的

用char定义char a=65和char a=A是等效的
当输出为printf("%d",a); 输出65
当输出为printf("%c",a); 输出A
这是asc码
至于等于1的问题,楼主可以试下你原来程序,a=0~127,a为本身
a=128,则输出a=-128
a=129,则输出a=-127
a=130,则输出a=-126
依次类推,不知道我说明白没有,大家共同努力呀!!!

独孤小梦 发表于 2008-7-20 20:18

下面一节是补码?

iFreeBSD 发表于 2008-7-20 21:01

1025 mod 256

coming 发表于 2008-7-20 21:53

大概要是比那个大的话就循环了 就像楼上说的~~~不过哪高手能给一个精确的解释

chengli 发表于 2008-7-21 20:11

这样的

1025 == 0x401  二进制为 0100 0000 0001
char 类用的变量只有8为  0x401已经使变量的值溢出了,  取后面8位
所以说输出 1

蓝色神话 发表于 2008-7-21 20:20

楼上解释已经很清楚了!

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.