在C++中比较两种数据类型?

pcww981p  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(131)
#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”作为输出。

34gzjxbg

34gzjxbg1#

它们的类型被自动(隐式)转换,然后进行比较。https://www.learncpp.com/cpp-tutorial/44-implicit-type-conversion-coercion/
总之
如果一个操作数是一个比int窄的整数,它将经历整数提升(如上所述)到int或unsigned int。
如果操作数仍然不匹配,则编译器查找最高优先级的操作数,并隐式转换其他操作数以匹配。

编辑

B == a,a == b是否属于同一比较类别?因为在b == a的情况下(char与int比较),在a == b的情况下(反之亦然)
是的,它们是一样的。无论它们的位置如何,char都应该升级为int类型。如果较大的转换为较小的类型,则有可能失去其价值。所以小一点的应该升级到大一点的。

相关问题