Dee*_*ama 4 c comparison unsigned gcc sizeof
此 C 代码给出输出“False”并且else块正在执行。
的值为sizeof(int)4,但 的值为sizeof(int) > -10。
我不明白发生了什么。
#include <stdio.h>
void main()
{
if (sizeof(int) > -1 )
{
printf("True");
}
else
{
printf("False");
}
printf("\n%d", (sizeof(int)) ); //output: 4
printf("\n%d", (sizeof(int) > -1) ); //output: 0
}
Run Code Online (Sandbox Code Playgroud)
您的sizeof(int) > -1测试是比较两个无符号整数。这是因为sizeof操作者返回一个size_t值,该值是的unsigned类型,所以-1值被转换为它的“等效”表示为无符号值,它实际上是在最大可能为一个值unsigned int。
要解决此问题,您需要将值显式sizeof转换为 (signed) int:
if ((int)sizeof(int) > -1) {
printf("True");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |