在 C 和 c + + 中的大小是字符的什么?就我知道大小是字符的 1 个字节在 C 和 c + + 中。

在 c:

#include <stdio.h>
int main() {
  printf("Size of char : %d
",sizeof(char));
  return 0;
}

在 c + +:

#include <iostream>
int main() {
  std::cout<<"Size of char : "<<sizeof(char)<<"
";
  return 0;
}

一切尽在掌握,这两个生成输出︰Size of char : 1

现在我们知道字符表示为'a''b''c''|',...因此只需修改这些上面的代码︰

在 c:

#include <stdio.h>
int main() {
  char a = 'a';
  printf("Size of char : %d
",sizeof(a));
  printf("Size of char : %d
",sizeof('a'));
  return 0;
}

输出︰

Size of char : 1
Size of char : 4

在 c + +:

#include <iostream>
int main() {
  char a = 'a';
  std::cout<<"Size of char : "<<sizeof(a)<<"
";
  std::cout<<"Size of char : "<<sizeof('a')<<"
";
  return 0;
}

输出︰

Size of char : 1
Size of char : 1

为什么sizeof('a')在 C 和 c + + 中返回不同的值?

2010-01-31 19:15:20
问题评论:

"%|"格式要求int参数 (或东西将升级为int)。sizeof结果类型size_t请将转换为int ,使用强制转换或实施支持它,如果使用"%zu".

回答:

在 C 中,类型的字符常量 'a'像是实际int,大小为 4 (或其他实现相关值)。C + + 中的类型为char,大小为 1。这是两种语言中的许多小区别之一。

在 c + + 标准中的一节 2.13.2/1,c 6.4.4.4,至少在我的文档中。

+ 1 (不同的是,"大小 4"显然适用于 nthrgeek 的平台,而它并不一定适用于所有平台。

@nthrgeek︰ 我太懒,引用这两个标准,但 c + + 标准都有一个专用于 C.的不兼容情况的附录在附录 C.1.1 提到,"的原义字符类型从int更改为char,这可以说明问题。:)

@nthrgeek: §6.4.4.4、 段落 10:"整型字符常数具有 int 类型。一个整型字符常数的值包含单个字符映射为单字节执行字符被映射字符被解释为一个整数的表示形式的数值"。

@nthrgeek︰ 您应该不问的标准参考除非有关于特定点的参数,并且您想要理解为什么其他人有不同的意见。如果每个人都只是同意接受它。您 (作为开发人员) 应该是相当足够智能化,若要快速查找这样的常见答案全部按自己。

如保罗所述,是因为'a' c 一个int ,但 c + + 中的一个char

我在介绍中东西我写了几年前,在 C 和 c + + 之间的具体区别︰ http://david.tribble.com/text/cdiffs.htm

只是好奇,但您正在更新该 (非常详细) 的文档,在 C + + 11 和 C11 中包括新的更改?

不是在现在。我感兴趣的 C 和 c + + 有大量 waned 在过去的五年左右。

呃,我用所做的工作来编写和位于北部的这里这种小世界 !

在 C 中的字符类型是int和 c + + 中的字符这是需要对支持函数重载的 c + + 中。此示例,请参阅︰

void foo(char c)
{
    printf("char");
}
void foo(int i)
{
    print("int");
}
int main()
{
    foo('i');
    return 0;
}

输出︰

char
内容来源于Stack Overflow Size of character ('a') in C/C++
请输入您的翻译

Size of character ('a') in C/C++

确认取消