【发布时间】:2020-02-14 05:25:48
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
typedef unsigned int U32;
int main() {
U32 var = -1;
printf("var = %u\n", var);
if(var != -1)
{
printf("\n I'm not -1\n");
}
else
{
printf("I'm -1 and Var :%u\n", var);
}
}
此处的“-1”应转换为unsigned int 并应分配给var。然后在if 条件下它不应该等于-1。但它会进入else 语句。
【问题讨论】:
-
为什么你认为第二个
-1也不会被转换?编译器会警告您有符号/无符号比较不匹配? -
你也应该得到一个警告。但预计它会继续下去
标签: c implicit-conversion arithmetic-expressions