C编程: Division in an if-statement

标签 c if-statement

<分区>

为什么SIZE的值大于-1时打印2?

代码链接:http://ideone.com/VCdrKy

#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/

相关文章:

c - 如何读取文件的所有内容,包括有效文本之间的 NUL 字符?

c - 在 Ida pro 中反汇编 c 函数

java - 在 Java 中缩短 if 条件的可能性

linux - Bash - if 语句中的错误代码不起作用

java - Android - 根据用户选择设置背景颜色

c - 用户字符串输入到\0 在 c

c - 使用单个管道的矩阵乘法

java - 为什么需要这个返回语句?

javascript - Noobish JavaScript 嵌套 If-Else 语句帮助/建议/指针/YouNameIt

c - 为什么在C语言的socket编程中需要服务器本身的ip地址