鱼C论坛

 找回密码
 立即注册
查看: 3117|回复: 8

谁来帮我解释下这道题啊!

[复制链接]
发表于 2012-2-9 18:54:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 花落、莫相离 于 2012-2-9 19:54 编辑

#include <stdio.h>
main()
{
int b=322;

char c2;
c2=b;
printf("%c\n",c2);

}


这道题   输出结果为 B    为什么?

b=322   c2=b   

我是不是可以理解成   c2=b=322?

如果这样的话    c2是char型    b是int型   是不是要查ascii码表找322对应的字符?   

可我找来找去  都没找到322   但是输出结果却是大写的B   为什么?  

我把322 改成了 66  也是大写的B   改成98  是小写的b   66在ascii码表里对应的字符就是B

但是   ascii码表里就0-255   如果超出255范围  比如 322   它应该表示什么?  它为什么会输出为 B

这问题都把我弄蒙了!!!  谁来帮我解答下!!  不胜感激!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-9 19:09:59 | 显示全部楼层
本帖最后由 Cabernet 于 2012-2-9 19:19 编辑

单步调试下看看。
十进制的322转为二进制1 0100 0010
十进制的66转为二进制为0100 0010
发现规律了吗?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-9 19:23:34 | 显示全部楼层
本帖最后由 花落、莫相离 于 2012-2-9 19:26 编辑

我就想知道 为什么 322 出的结果是 大写的 B  :(
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-9 19:33:15 | 显示全部楼层
本帖最后由 hy19970612 于 2012-2-9 19:37 编辑

不知道中!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-9 19:40:37 | 显示全部楼层
#include <stdio.h>

int main()
{
        printf("%d\n",sizeof(int));
        printf("%d\n",sizeof(char));
       
        return 0;
}
范围结构为:int型数据占4个字节,char型数据占1个字节,
1个字节为8位, 即 0000 0000
322的二进制为1 0100 0010。。。为9位,舍弃了最高位,变为0100 0010。。转为二进制为66.
66的对于的ascii码为B


二楼提醒很明显,不动手也得动脑想想啊
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-9 19:45:10 | 显示全部楼层

我发现一个规律,如果一个十进制数要转成char字符  比如 66转换成字符  就是 B,如果这个数大于255,那么就用这个数减去256  得到的结果只要小于 255  就可以找到这个数在 ascii码表中的字符   
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-9 19:46:11 | 显示全部楼层
楼上正解 楼主要做不到脑中有编译器的感觉 就调试看 看编译器运行代码各个步骤看下 就了解了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-2-9 19:47:54 | 显示全部楼层
char的范围是0~255
322 是 int型 赋值给 char型
就是说 322 赋值给char型,char型放不下,所以就舍弃了 最高位
322对应的二进制:1 0100 0010
舍弃最高位 1  剩下 0100 0011 就是十进制的 66 对应的大写B

不知道是不是这样理解....
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-2-9 19:52:27 | 显示全部楼层
明白了 明白了!  谢谢各位   嘿嘿!  
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-11 03:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表