该程序。
规范文件 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf 中第6.5.3.4节第4段规定:
#include <stdio.h>
int main(void) {
printf("sizeof( char ) = %zu, sizeof 'a' = %zu.\n", sizeof( char ), sizeof 'a' );
return 0;
}
输出以下结果:
sizeof( char ) = 1, sizeof 'a' = 4.
我正在使用gcc进行编译(clang的结果相同),同时还使用了以下标志:
gcc -Wall -Wextra -Wswitch -pedantic -ansi -std=c11 -DDEBUG -ggdb3 -o
规范文件 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf 中第6.5.3.4节第4段规定:
4. 对于类型为 char、unsigned char 或 signed char(或带限定符版本)的操作数应用 sizeof 运算符,结果为 1。
因此,如果操作数 'a' 的类型为 char,我希望其 sizeof 的结果为 1。它会自动“提升”为 int 类型或类似的类型吗?(我注意到,如果将 'a' 强制转换为 char,则 sizeof((char)'a') 的结果为 1。)
或者我查看的标准不正确吗?
a
在基于 ASCII 的机器上与97
完全等价。 - ikegamiint
。 - chux - Reinstate Monica