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
它们的类型会自动(隐式)转换,然后进行比较。 https://www.learncpp.com/cpp-tutorial/44-implicit-type-conversion-coercion/
简而言之,
如果操作数是一个比int窄的整数,则它会对int或unsigned int进行整数提升(如上所述)。
如果操作数仍然不匹配,则编译器找到最高优先级的操作数,并隐式转换另一个操作数以匹配。
编辑:
b == a,a == b他们是否属于同一类比较?因为在b == a(char与int比较)的情况下,如果是== b(反之亦然)
是的,他们是一样的。无论他们的位置如何,char
应该被提升为int
类型。如果较大的一个转换为较小的类型,则有可能失去其价值。所以较小的一个应该被提升到更大的类型。