鱼C论坛

 找回密码
 立即注册
查看: 1695|回复: 4

新手求助,零基础入门C语言在第二章类型转换3.18里面的列子

[复制链接]
发表于 2014-11-18 21:28:04 | 显示全部楼层 |阅读模式

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

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

x
零基础入门C语言
在第二章类型转换3.18里面的列子
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int a, b = 322;
  5.         float x, y = 8.88;
  6.         char c1 = 'k', c2;
  7.         a = y;
  8.         x = b;
  9.         a = c1;
  10.         c2 = b;
  11.         printf("%d, %f, %d, %c\n", a, x, a, c2);

  12. }
复制代码
不理解为什么“c2”输出结果为“B”
我猜测是25+667=322,其中从0到66正好67个数字,正好66是B,不知道对不对,亲们解析一下,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-19 21:41:41 | 显示全部楼层
b = 322;  c2 = b;
执行后需要将int转换为char,因为c2 = 0x00000142(4字节),因为char为1字节,所以会截断,b = 0x42 = 66 = 'B'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-19 21:58:14 | 显示全部楼层
322 的二进制是 101000010
C2是按1字节方式ascii码转字符输出  那么我们都知道1个字节是8位, 101000010超过了8位,
很明显就被截断了最前面的1 剩下01000010那么1000010这是二进制数就是十进制的66
66的ascii值的对应字符串就是B
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-22 22:49:13 | 显示全部楼层
风之残月 发表于 2014-11-19 21:41
b = 322;  c2 = b;
执行后需要将int转换为char,因为c2 = 0x00000142(4字节),因为char为1字节,所以会 ...

谢谢亲了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-22 22:50:09 | 显示全部楼层
machimilk 发表于 2014-11-19 21:58
322 的二进制是 101000010
C2是按1字节方式ascii码转字符输出  那么我们都知道1个字节是8位, 101000010超 ...

谢谢亲了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-17 00:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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