INT 的大小为 4 个字节, CHAR 为 1 个字节。
INT 的上限是 -2,147,483,648到2,147,483,647 , CHAR 是 -128到127。
#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
在这里,我的怀疑都具有不同的限制和大小。
1
答案 0 :(得分:4)
它们的类型会自动(隐式)转换,然后进行比较。 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
类型。如果将较大的商品转换为较小的商品,则有机会失去其价值。因此,较小的应该升级为较大的类型。