我遇到了这个问题。
#include <stdio.h>
int main(void) {
// your code goes here
unsigned int i = 23;
signed char c = -23;
if (i > c)
printf("yes");
else
printf("no");
return 0;
}
我无法理解为什么这段代码的输出是no
。
有人能帮助我理解在C语言中比较运算符在比较int
和char
时是如何工作的吗?
signed char
值转换为int
),以及6.3.1.8的通常算术转换(在执行比较之前将两个操作数转换为公共类型,unsigned int
)。 - Keith Thompson