数据类型char的存储



有点奇怪的是,C将字符常量视为int类型,而不是char类型。例如,在具有32位int和8位char的ASCII系统上,代码

char grade = 'B';

'B'表示为以32位为单位存储的数值66,但等级最终为以8位为单位的66。请解释一下这几行。

grade的类型为char,它是用int类型的表达式初始化的。这是非常普通和合法的,并且int值被隐式转换为类型char。任何算术类型的值都可以隐式转换为任何其他算术类型。

这样的隐式转换是为什么在99%的情况下,字符常量是int类型的事实不是问题;根据上下文适当地转换这样的常数。

(请注意,在C++中,字符常量的类型为char。请记住,C和C++是两种不同的语言。)

最新更新