首页>Program>source

我尝试过

printf("%d, %d\n", sizeof(char), sizeof('c'));

并获得1、4作为输出.如果一个字符的大小是1,为什么 'c' 给我4? 我猜是因为这是整数.所以当我做 char ch = 'c';

最新回答
  • 2021-1-11
    1 #

    在C中," a"是整数常量(!?!),在引擎盖下是否发生了从该4字节值到1字节值的隐式转换? ),因此4对您的体系结构是正确的.将其隐式转换为char以进行分配.根据定义,sizeof(char)始终为1.标准没有说1是什么单位,但通常是字节。

  • 2021-1-11
    2 #

    C标准说,像'a'这样的字符文字是int类型,而不是char类型.因此,(在您的平台上)它的sizeof ==4。请参阅此问题以进行更完整的讨论。

  • 2021-1-11
    3 #

    这是 sizeof的正常行为 运算符(请参阅wikipedia):

      For a datatype, sizeof 返回数据类型的大小.对于 char ,您得到1。

      表达, sizeof 返回变量或表达式的类型的大小.作为字符文字,键入为 int ,您得到4。

      p

      此内容涵盖在ISO C11 6.4.4.4 Character constants中 尽管与以前的标准相比在很大程度上没有变化.在 /10段中指出 :

      An integer character constant has type int. The value of an integer character constant containing a single character that maps to a single-byte execution character is the numerical value of the representation of the mapped character interpreted as an integer.

      p

      根据ANSI C标准, 被提升为 char 在使用整数的上下文中,您在 int中使用了整数格式说明符 因此值不同.字符通常为1个字节,但这是根据运行时和编译器定义的实现。

      printf

  • c#:遍历函数结果时,foreach如何工作?
  • c++:如何在OpenMP中使用锁定?