【发布时间】:2018-03-05 22:00:26
【问题描述】:
我有以下代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[]){
printf("size of tab = %d\n", sizeof('\t'));
printf("size of a = %d\n", sizeof('a'));
printf("size of char = %d\n", sizeof(char));
}
输出:
size of tab = 4
size of a = 4
size of char = 1
为什么'a' 的大小和char 的大小不同。 'a' 不是 char 吗?
【问题讨论】:
-
sizeof('\t')实际上是在计算int的大小,其中int是'\t'的ASCII 值,sizeof('a')的情况类似 -
'a'是一个int。 C 中的所有常量至少为int。 -
6.4.4.4 字符常量 p2 整数字符常量是一个或多个用单引号括起来的多字节字符的序列,如 'x'。 和 p10 整数字符常量的类型为 int。 6.5.3.4 sizeof ... 运算符 p4 当 sizeof 应用于类型为 char、unsigned char 或 signed char 的操作数(或限定版本)时其中)结果为 1。