C 和 C++ 中 char 的区别?

Difference between char in C and C++?

我知道 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

在这个答案中,用户 Kerrek SB(438k Rep.) 讲述了 C++ 中的类型,也没有提到 char 既没有 int 也没有提到积分。

C++中的char是整数类型还是严格的char类型?

is char in C++ is integral type or strict char type ?

使用 type_traits 让您知道类型:

#include <iostream>
#include <type_traits>
int main()
{
    std::cout << std::is_integral<char>();
}

输出:

1

is char in C++ is integral type or strict char type ?

字符类型,例如 char,是 C++ 中的整数类型。

C中的窄字符常量类型是int,而C++中的窄字符字面量类型是char

正如其他人提到的,在 C 中 'a' 是 char 常量并被视为整数。 在 C++ 中它是整数。

您还可以使用 RTTI(运行 时间类型信息)检查 C++ 中 char c = 'a''a' 之间的区别,如下所示:

#include <iostream>
#include <typeinfo>
using namespace std;
  
int main()
{

    char c = 'a';
  
    // Get the type info using typeid operator
    const type_info& ti2 = typeid('a');
    const type_info& ti3 = typeid(c);
  

    // Check if both types are same
    if (ti2 != ti3)
        cout << "different type" << endl;
    else
        cout << "same type"<< endl;
  
    return 0;
}

输出为:same type

但是,char c = 'a''a' 在 C 中是不同的。