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

时间:2019-02-13 07:09:20

标签: c++ g++

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

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

  • 如何比较两种不同的数据类型?我在Google上搜索, 没有找到满意的答案。
  • 是编译器问题还是我想念的东西吗?
  • b == a,a == b 是否属于同一比较类别?因为在b == a(char与int比较)的情况下,在a == b(反之亦然)
  • 如果 a 值为67,则输出为
  

1

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类型。如果将较大的商品转换为较小的商品,则有机会失去其价值。因此,较小的应该升级为较大的类型。