#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”作为输出。
1条答案
按热度按时间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
类型。如果较大的转换为较小的类型,则有可能失去其价值。所以小一点的应该升级到大一点的。