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

int和char除了字节不同还有什么区别么,感觉能换着用的样子

int和char除了字节不同还有什么区别么,感觉能换着用的样子

C
一凛冬一 2017-09-27 10:27:18
_(:3 」∠ )_
查看完整描述

4 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

确实,它们都属于整型。在存储方式上是类似的,占用位数不同,可保存数值的范围不同。

但要注意:int 就是 signed int,是有符号整型。而 C 标准没规定 char 是有符号还是无符号。所以尽量不要让 char 接收超过 127 的整型值(万一char是有符号整型),以免发生溢出。

整型间互相赋值时会发生隐式转型,不需要强制转型。当然如果有精度损失,编译器会给出警告的。

查看完整回答
1 反对 回复 2017-09-27
  • 一凛冬一
    一凛冬一
    谢谢大佬(= ̄ω ̄=)
  • onemoo
    onemoo
    我这里说的是在类似赋值时会发生隐式转型。但你给的图片中却不是这种情况。 我在那个回帖中给你写了解释。
?
NJP

TA贡献32条经验 获得超39个赞

这两种数据类型都是4个字节,而且其实char型数据的解释方式就是根据int型数据的数值所对应的ASCII码来找到对应的字符的,所以这两种数据类型的变量可以互通使用

查看完整回答
2 反对 回复 2017-09-27
?
王牧之wmz

TA贡献2条经验 获得超1个赞

当然有区别,一个是字符常量,一个是整型常量,只有通过强制类型转换才行,但是这样做意义不大

查看完整回答
1 反对 回复 2017-09-27
?
一凛冬一

TA贡献2条经验 获得超0个赞

59cb16f30001157803600640.jpg

。。。。59cb16fe0001b66503600640.jpg

查看完整回答
反对 回复 2017-09-27
  • onemoo
    onemoo
    对了,再多说一下。printf("%c,%c\n", a, b) 这里并没有发生转型! printf是按照%c指示把a和b当作字符型来打印的,只不过刚好它们都属于整型,在内存布局上一样,才能正常打印。 你在调用printf时应该避免传入与格式化指示符%c类型不一致的变量! 万一传入的是不兼容的类型printf就无法正常工作了。 事实上这个代码在编译时应该会有类型不匹配警告的。
  • 4 回答
  • 1 关注
  • 3387 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信