<分区>
为什么SIZE的值大于-1时打印2?
#include <stdio.h>
int array[] = {1,2,3,4,5,6,7,8};
#define SIZE (sizeof(array)/sizeof(int))
int main(void) {
if(-1<=SIZE) printf("1");
else printf("2");
return 0;
}
标签 c if-statement
<分区>
为什么SIZE的值大于-1时打印2?
#include <stdio.h>
int array[] = {1,2,3,4,5,6,7,8};
#define SIZE (sizeof(array)/sizeof(int))
int main(void) {
if(-1<=SIZE) printf("1");
else printf("2");
return 0;
}
最佳答案
两个参数的类型不同
参数“转换”为“普通”类型,有符号 -1 和无符号 SIZE 之间的“普通”为无符号。
所以 -1 被转换为 -> 大于 SIZE 的 0xfffffff(取决于架构)
关于C编程: Division in an if-statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45648694/