c - 为什么 sizeof ('3' ) == 4 使用 GCC 编译器?

标签 c gcc char sizeof

<分区>

为什么下面程序的输出是4?

#include <stdio.h>

int main()
{
    printf("%d\n", sizeof('3'));
    return 0;
}

最佳答案

因为字符常量的类型是int,而不是char(而且int在你的平台上的大小是四)。

C99 规范草案说:

An integer character constant has type int.

这可能看起来很奇怪,但请记住您可以这样做:

const uint32_t png_IHDR = 'IHDR';

换句话说,单个字符常量可以包含多个实际字符(四个,以上)。这意味着生成的 value 不能具有 char 类型,因为那样它会立即溢出并且毫无意义。

注意:上面的内容似乎不是一个很好的方式,那是另一个讨论。 :)

关于c - 为什么 sizeof ('3' ) == 4 使用 GCC 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19318022/

相关文章:

java - 计算文件中的字符数

C 比较类型

c - #error 需要证明一个真实的asm/page.h

c - 8 位与 32 位指数偏差

c++ - 从具有 bigendian 格式的 QByteArray 获取 float 组的有效方法

c++ - winapi GetProcessMemoryInfo invalid arguments 问题

c - 拆分/解析 char 数组并获取两个标记 C 之间的值

c - ffmpeg avio_open2() 无法打开输出 rtsp 流

linux - OpenCv 人脸检测示例卡住,没有任何错误或日志

c++ - 尽管使用了 C++14 功能,为什么使用 C++11 编译成功?