【发布时间】:2021-12-30 00:29:20
【问题描述】:
我知道 C 和 C++ 是不同的语言。
代码 - C
#include <stdio.h>
int main()
{
printf("%zu",sizeof('a'));
return 0;
}
输出
4
代码-C++
#include <iostream>
int main()
{
std::cout<<sizeof('a');
return 0;
}
输出
1
https://stackoverflow.com/a/14822074/11862989 在这个答案中用户 Kerrek SB(438k Rep.) 讲述了 C++ 中的类型,也没有提到 char 既没有 int 也没有提到。
C++中的char是整型还是严格的char类型?
【问题讨论】:
-
C 中的字符文字是
int,但在 C++ 中,它是char。 -
是的,
char在 C 和 C++ 中都是整数类型。不同之处在于字符文字(如'a')在C++ 中具有char类型(因此大小为1)而在C 中具有类型int(大小实现已定义,通常不是1)。 -
差异的一个很好的原因是:C++ 有重载的方法。例如:
void method( char c );和void method( int n );。如果字符常量是 C++ 中的int值,则调用method( 'a' );将调用int方法。因为 C 没有函数重载,所以在 C 中不会发生这种情况。