10201:常量与字符串字面量的类型
题目
判断 123、123u、3.14、'A' 和 "A" 的类别与类型。
解析
| 记号 | 类别 | 类型 |
|---|---|---|
123 | 十进制整数常量 | int |
123u | 带 u 后缀的整数常量 | unsigned int |
3.14 | 浮点常量 | double |
'A' | 整数字符常量 | int |
"A" | 字符串字面量 | char[2] |
解析
123 能由 int 表示,所以无后缀十进制整数常量选择 int。u 后缀使 123u 从无符号候选类型开始,这里得到 unsigned int。无后缀浮点常量的类型是 double。
在 C 中,普通字符常量 'A' 的类型是 int。字符串字面量 "A" 则是含字符 'A' 和末尾空字符的数组,因此长度为 2;它在大多数表达式中会转换成指向首元素的指针,但其自身并不是指针。
字符串字面量不可修改,即使普通字符串字面量的数组类型没有写出 const。