sizeof运算符在C中的IF语句中的工作方式

sizeof运算符在C中的IF语句中的工作方式,c,C,我期望程序的结果为“True”,但执行后结果为“False”。有人能解释一下为什么会这样吗?sizeof返回size\u t,它是无符号的 在C语言中比较无符号数和有符号数需要注意,因为这样的比较通常会给初学者带来令人惊讶的结果,正如我们在这里看到的 基本上,-1被转换为一个非常大的无符号int,因此您的条件为false。sizeof返回size\u t,即无符号 在C语言中比较无符号数和有符号数需要注意,因为这样的比较通常会给初学者带来令人惊讶的结果,正如我们在这里看到的 基本上,-1被转换为

我期望程序的结果为“True”,但执行后结果为“False”。有人能解释一下为什么会这样吗?

sizeof返回size\u t,它是无符号的

在C语言中比较无符号数和有符号数需要注意,因为这样的比较通常会给初学者带来令人惊讶的结果,正如我们在这里看到的


基本上,-1被转换为一个非常大的无符号int,因此您的条件为false。

sizeof返回size\u t,即无符号

在C语言中比较无符号数和有符号数需要注意,因为这样的比较通常会给初学者带来令人惊讶的结果,正如我们在这里看到的


基本上,-1被转换为一个非常大的无符号整数,因此您的条件为false。

您发现
sizeof
运算符的结果是什么?哪种类型?把这堆乱七八糟的东西格式化。阅读现代编译器应该警告这种比较。如果没有,请启用所有建议的警告(至少
-Wall-Wextra-Wconversion
)。在C语言中,if语句内部的sizeof运算符的工作原理与if语句外部的sizeof运算符的工作原理完全相同。您对
sizeof
运算符的结果有何了解?哪种类型?把这堆乱七八糟的东西格式化。阅读现代编译器应该警告这种比较。如果没有,请启用所有建议的警告(至少
-Wall-Wextra-Wconversion
)。在C语言中,if语句内部的sizeof运算符的工作方式与if语句外部的sizeof运算符的工作方式完全相同。结果不是“意外”,而是定义良好的结果。结果不是“意外”,而是定义良好的结果。
int main()
{
     if (sizeof(int) > -1 )
           printf("True");
     else
           printf("False");
     return 0 ;
}