#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 == a
和a == 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
类型。如果较大的人转换为较小的类型,则有机会失去其价值。因此,应将较小的一个晋升为较大的类型。