鱼C论坛

 找回密码
 立即注册
查看: 704|回复: 6

[已解决]这个类型转换的结果怎么来的(C语言)

[复制链接]
发表于 2020-8-10 18:17:22 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 浅暮流影 于 2020-8-10 18:33 编辑

#include <stdio.h>

void main()
{
        int a,b=322;
        float x,y=8.88;
        char c1='k',c2;
        a=y;
        x=b;
        a=c1;
        c2=b;
        printf("%d,%f,%d,%c",a,x,a,c2);
}
结果是107,322.000000,107,B
最佳答案
2020-8-10 18:32:59

a=c1;  这句就把字符'k'赋值给int类型的a,'k'的ASCII吗是107,所以a的值为107
x=b;    这句把int类型的322赋值给浮点型,然后x的值就是322.000000
c2=b;   这句把int类型的322赋值给char类型的c2,char是一个字节,只显示256以下的值,所以实际上c2的值是322-256=66,ASCII码为66的值是'B'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-10 18:24:40 | 显示全部楼层
我这里运行结果是
107,322.000000,107,B
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-10 18:25:07 | 显示全部楼层
我这代码的执行结果是
107,322.000000,107,B

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

使用道具 举报

发表于 2020-8-10 18:27:30 | 显示全部楼层
额,化简后你的:
a=c1;你把字符型强制转换成了整数型,所以变成了107
x=b=322;
a=c1;
c2=b;又是强制转换……
而:
第一个%d是整型输出,由于整数是由字符型强制转换而来,可能是乱码,所以输出是107
第二个%f是实数输出,可以输出整数,所以输出322
第三个应该也是107,这个我不懂,请教楼下大神
第四个%c是输出字符的,你给他放了个整数,所以转换错误,出来个107
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-10 18:28:10 | 显示全部楼层
sunrise085 发表于 2020-8-10 18:24
我这里运行结果是

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

使用道具 举报

发表于 2020-8-10 18:30:24 | 显示全部楼层
a = c1 这一句将 a 赋值为了字符 'k' 的 ASCII 码 107,所以 a 为 107
b 赋值给浮点数类型的变量 x,所以 x 为以浮点数表示的 322 也就是 322.000000
322 被赋值给了字符类型变量 c2,而 char 类型最多只能存储 127,所以余下的部分被 “裁剪”,322 % 128 为 66,打印的是 ASCII 码对应为 66 的字符 'B' 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-10 18:32:59 | 显示全部楼层    本楼为最佳答案   

a=c1;  这句就把字符'k'赋值给int类型的a,'k'的ASCII吗是107,所以a的值为107
x=b;    这句把int类型的322赋值给浮点型,然后x的值就是322.000000
c2=b;   这句把int类型的322赋值给char类型的c2,char是一个字节,只显示256以下的值,所以实际上c2的值是322-256=66,ASCII码为66的值是'B'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 08:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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