为了账号安全,请及时绑定邮箱和手机立即绑定

将 double 类型 赋值给char类型,也可以执行?

1、为什么将 double 类型 赋值给char类型,也可以执行?

2、为什么在格式化输出中,以%c 输出 char类型,double类型,也可以执行?

http://img1.sycdn.imooc.com//55fac28f0001c89405210375.jpg

正在回答

3 回答

  1. 在赋值(初始化)时,如果两侧类型不一致的话,等号右侧的变量会临时转换为左侧的类型,这不会影响右侧变量本身的类型和值,转换后的值再给左侧赋值。

    char属于整型,那右侧的值就会从浮点型转为整型,转换过程是丢弃小数部分,所以char会获得d的整数部分的值。

    其实第5,6,7,8行都发生了这种自动类型转换。

  2. printf会把后面的参数按照前面的格式化指示符来解释并输出,在使用时要求一定要类型相符。但注意:类型不符的话,函数仍会去读取那个变量的值,且只会按照指示的类型来解释(而不管实际的类型,实际上函数根本就无从知晓),而不同类型在内存中的存储结构可能不同,这样会导致输出“乱码”乃至崩溃。

    n 和 x 都算是整型,存储结构是一样的,所以输出还算没有问题。除非必须,否则尽量避免这样写。

    而一般浮点型的存储方式与整型大不一样,所以按照char来输出浮点型一般会有问题。这里d的输出结果也不正常。

1 回复 有任何疑惑可以回复我~

抱歉刚刚看到回答,回答的很详细,非常感谢!

0 回复 有任何疑惑可以回复我~

ASCII码

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

将 double 类型 赋值给char类型,也可以执行?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信