奇怪的是,C将字符常量视为int类型而不是char类型。例如,在具有32位int和8位char的ASCII系统上,代码为
char grade = 'B';
表示'B'
作为以32位单位存储的数值66,但是等级以66位存储在8位单元中。
请解释这一行。
答案 0 :(得分:1)
grade
的类型为char
,并使用int
类型的表达式进行初始化。这是完全普通和合法的,int
值隐式转换为类型char
。任何算术类型的值都可以隐式转换为任何其他算术类型。
这种隐式转换是99%的时候,字符常量属于int
类型的事实不是问题的原因;这些常量根据上下文进行适当转换。
(请注意,在C ++中,字符常量的类型为char
。请记住,C和C ++是两种不同的语言。)