比较C 中的两个数据类型


#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a;
    char b;
    a = 66000; 
    b = 'C';
    if (b == a)
    std::cout << "1";
    else
    std::cout << "2";     
}

上述功能的输出为

2

我不明白的是:

  • C 如何比较两个不同的数据类型?我在Google上搜索,我找不到令人满意的答案。
  • 这是编译器问题还是我未能阅读的内容?
  • b == aa == b是相同的比较吗?订单很重要吗?

a的值为67时,上述程序给出了" 1"。作为输出。

它们的类型是自动转换的,然后被比较。https://www.learncpp.com/cpp-tutorial/44-implitic-type-conversion-coercion/

简而言之,

如果操作数是一个比int窄的整数,则它会经历积分促进(如上所述)to int或inted int。

如果操作数仍然不匹配,则编译器找到最高优先操作数并隐式转换另一个操作数以匹配。

编辑

b == a,a == b它们是否属于相同类别的比较?因为如果是b == a(与int进行比较),如果是a == b(是反之亦然)

是的,它们是一样的。无论其位置如何,char都应晋升为int类型。如果较大的人转换为较小的类型,则有机会失去其价值。因此,应将较小的一个晋升为较大的类型。

最新更新