有人可以解释一下如何在C中工作吗?
特别是当左侧和右侧操作数的类型不同时它是如何工作的?
是根据第一个还是第二个的类型比较它们?
答案 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;
}