同志们,谁能告诉我这个程序的运行结果?

#include
int main() {
int a=0;
unsigned ui=0;
if(0>(ui-1))
a=1;

printf("%d\n",a);
printf("%u\n",ui-1);

return 0;

}

if(0>(ui-1))这个条件不会满足的,因为 ui 是无符号数

运行程序后 a=0 为什么呢

unsigned ui=0;默认就是unsigned int ui=0;if语句不成立,你可以试试unsigned u2=ui-1;输出u2就知道了。

条件不成立,你可以试试

明白了。ui是无符号数,ui-1也是无符号数 所以0不可能大于无符号数,所以if表达式不成立。a=0