大大怪超人 发表于 2020-4-24 14:45:08

新手上路,小白求助

请问各位大神,如何理解C语言将字符常量视为int类型而非char类型?
是因为字符常量有其对应的ascii编码么?
如果是这样的话,请问char类型是什么类型?
一个字节么?
如果方便的话能不能稍微举例说一下,谢谢各位!

Hello. 发表于 2020-4-24 15:00:02

ASCII码中,每个字符都对应一个数字

Hello. 发表于 2020-4-24 15:03:26

char占一个字节,共八位,以二进制数字表示

liuzhengyuan 发表于 2020-4-24 15:05:35

char 是字符·
ASCII 码可以百度一下

4goodworld 发表于 2020-4-24 15:12:31

有些东西到了一个限度就不要再分了
就好像 分子是保持物质属性的最小单位,如果你再分下去,有原子、有夸克,但这个都已经让你愿意为的物质失去了“物”的概念了
char类型就是char 类型,你要纠结它是数还是啥呢?
对C而言,什么不是数?
或者说,对计算机而言,它只认识通电(1)不通电(0)的二进制
是不是还要问char类型与二进制有啥关系呢?
其实你现在的状态只要到知道就行了,char a='A', 你会发现我如果printf("%d",a),怎么还会返回65呢,可这又如何?记住就行了,再过几天、几个月知识储备多了,再看,或许就明白了其中的道理了

永恒的蓝色梦想 发表于 2020-4-24 15:29:52

char就是数字,8位的那种

大大怪超人 发表于 2020-4-24 16:27:53

Hello. 发表于 2020-4-24 15:00
ASCII码中,每个字符都对应一个数字

好的!谢谢你的解答!

大大怪超人 发表于 2020-4-24 16:28:59

4goodworld 发表于 2020-4-24 15:12
有些东西到了一个限度就不要再分了
就好像 分子是保持物质属性的最小单位,如果你再分下去,有原子、有夸 ...

好的,谢谢你的耐心解释!谢谢!

倒戈卸甲 发表于 2020-4-24 17:07:28

本帖最后由 倒戈卸甲 于 2020-4-24 17:38 编辑

{:10_247:}我怎么觉得楼上都在拿你寻开心。。。。
char类型在C语言中是定义非常严格的一个字节的数据类型,在各个标准下char类型都是一个字节。
其定义为8位二进制编码,转换成数值0到255,转化成符号,就是你英文输入法下键盘上按键敲一下能出的东西。
字符常量一方面其最大长度为四个字节,另一方面,在编译时会当做一个int型数值来处理。
这些其实打开你的编译器一试便知,'1234','ghsh'或者'56aQ'之类的编译器都会告诉你是字符常量,用调试工具也能看到其对应的int值,如果你编译器够先进,鼠标在这些常量上一停放就能看到对应的数值。一二三个字节的字符常量都给你通过,但'00000'五个字节立马报错
页: [1]
查看完整版本: 新手上路,小白求助