【问题标题】:Understanding the sizeof operator in C [duplicate]了解 C 中的 sizeof 运算符
【发布时间】:2016-03-29 10:49:09
【问题描述】:
char c = 'A';
printf("%d\n",sizeof(c));// output = 1
printf("%d\n",sizeof('A')); // output = 4

为什么sizeof 运算符为相同的字符提供不同的输出?请帮忙

【问题讨论】:

  • 因为 'A' 没有类型。它被解释为int
  • @DavidHoelzer 它确实有一个类型,类型是int
  • 很公平。由于 'A' 没有以任何方式强制转换,因此根据定义它是 int。我更关注的是它们的定义方式有所不同。谢谢!
  • 没有类型的表达式是不存在的......多么奇怪的概念。

标签: c sizeof


【解决方案1】:

cchar 类型的变量;它的大小是 1 个字节。

'A'int 文字 - 不要问我为什么标准这么说。它的大小在您的平台上为 4 字节(与 sizeof(1) 相同)。

【讨论】:

  • 在过去,人们使用多字节字符,例如“xy”。 PDP11 UNIX 代码有很多这样的东西。当他们将 C 移植到 bigendian 机器时,它大部分都消失了。 C++ 修复了这个...字符常量是字符。这是 C 不是 C++ 真子集的少数几种方式之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 2018-03-30
  • 2011-07-04
  • 2014-09-16
  • 1970-01-01
相关资源
最近更新 更多