【问题标题】:Sizeof in C and C++ [duplicate]C和C++中的Sizeof [重复]
【发布时间】:2011-09-22 06:40:07
【问题描述】:

可能重复:
Size of character ('a') in C/C++

#include <stdio.h>

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

#include <iostream>
using namespace std;     

int main(){  
  cout << sizeof('a');  
  return 0;  
}

对于 C,它给出 4 作为答案,而对于 C++,它给出 1 ? 我的问题是为什么语言对字符常量的解释不同?

【问题讨论】:

  • 有趣的事情(虽然可能不是很有用)是您可以合法地引用诸如“abcd”之类的东西(单引号而不是双引号)......它没有定义一个字符或一串字符, 它定义了一个 int,它的值基于串在一起的每个 char 的 ascii 值。
  • 可能和 ansi vs. unicode 的事情,但那是猜测
  • 我熟悉的规则正好相反(sizeof('a') 在 C 中是 4,​​在 C++ 中是 1)。
  • 这个问题已经回答before;在提问之前使用搜索! :)
  • ... 嗯,点击“提出问题”并将其文本粘贴到那里立即显示为第一个“类似问题”。根本不需要点击搜索。

标签: c++ c sizeof


【解决方案1】:

实际上是 C 中的 sizeof('a') == sizeof(int)(所以你应该得到 4)。我对 C++ 不是完全确定,但我相信 sizeof('a') == sizeof(char)

C部分在C FAQ中有解释。

也许令人惊讶的是,角色 C 中的常量是int 类型的,所以 sizeof('a')sizeof(int)(虽然 这是 C++ 的另一个领域 不同

【讨论】:

    【解决方案2】:

    您已经设法找到了 C 和 C++ 标准显着不同的少数几个地方之一。它们是不同的答案,因为规范说它们必须是。

    【讨论】:

      猜你喜欢
      • 2017-05-13
      • 2013-07-16
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2014-12-26
      • 2011-07-26
      相关资源
      最近更新 更多