我理解“const”关键字将变量赋值为Read Only变量,但是我不知道为什么常量char的大小是4个字节(例如GNU C编译器)的原因使它变得不同比“char”的大小是一个字节。
正如cquestions博客上所述,第一个问题是'A'是一个常量字符
printf("%d",sizeof('A'));
输出:4
答案 0 :(得分:4)
'A'
的类型int
不是const char
,还有所有字符常量。
这是从c11草案
中提取的6.4.4.4字符常量
- 整数字符常量是包含的一个或多个多字节字符的序列 在单引号中,如
醇>'x'
中所示。宽字符常量是相同的,除了以字母L,u或U作为前缀。稍后详述的一些例外,序列的元素是源字符集的任何成员;它们以实现定义的方式映射到执行字符集的成员。
- 整数字符常量的类型为int 。包含映射到单字节执行字符的单个字符的整数字符常量的值是解释为整数的映射字符的表示的数值。包含多个字符(例如,
醇>'ab'
)或包含未映射到单字节执行字符的字符或转义序列的整数字符常量的值是实现定义的。如果整数字符常量包含单个字符或转义序列,则其值是当类型为char
的对象的值为单个字符或转义序列的对象转换为类型int
时生成的值。
我把这个重要的部分变得大胆,以便立即可见。