比较c ++中的两种数据类型?

问题描述 投票:1回答:1

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

在这里,我的怀疑都有不同的限制和大小。

  • 如何比较两种不同的数据类型?我在谷歌搜索,我没有找到任何令人满意的答案。
  • 是编辑器问题还是我错过的东西?
  • b == a,a == b他们是否属于同一类比较?因为在b == a(char与int比较)的情况下,如果是== b(反之亦然)
  • 如果值为67,则输出为

1

c++ g++
1个回答
4
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.