首页 > 解决方案 > 比较 C++ 中的两种数据类型?

问题描述

INT的大小为4字节,CHAR1字节。

INT的限制是-2,147,483,648 到 2,147,483,647CHAR-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

我不明白的是:

a的值为 67 时,上述程序给出“1”作为输出。

标签: c++g++

解决方案


它们的类型会自动(隐式)转换,然后进行比较。 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类型。如果较大的转换为较小的类型,则有可能失去其价值。所以较小的应该提升为较大的类型。


推荐阅读