小于(<)运算符如何使用c中的混合类型

时间:2010-01-13 15:47:13

标签: c comparison types operators

有人可以解释一下如何在C中工作吗?

特别是当左侧和右侧操作数的类型不同时它是如何工作的?

是根据第一个还是第二个的类型比较它们?

3 个答案:

答案 0 :(得分:10)

C指定不同类型的标准转换。规则有点复杂,但基本上“较小”类型会暂时转换为较大的类型,因此,如果将int与char进行比较,则char将转换为int,仅用于比较。< / p>

答案 1 :(得分:1)

根据C99标准,任何关系运算符都允许使用以下操作数:

  • 两个具有实数算术类型的操作数
  • 指向同类型对象的两个指针

在前一种情况下,将根据usual arithmetic conversions转换不同的类型。

答案 2 :(得分:0)

就像Jason在其中一条评论中所说,你必须小心使用无符号类型。例如,以下代码打印出BROKEN:

#include <stdio.h>

int main() {
  int a = -1;
  unsigned int b = 1 << 31;

  if (a < b) {
    fprintf(stderr, "CORRECT\n");
  } else {
    fprintf(stderr, "BROKEN\n");
  }

  return 0;
}