以下代码中出现了一个奇怪的结果(为什么输入结果' b')

时间:2014-10-12 14:18:40

标签: c++ c

int main(void)
    {
       int array[] = {1,2,3,4,5,6,7};
       int i = -1;
       if(i <= (sizeof(array)/sizeof(array[0])) -2)
           printf("a\n");
       else
           printf("b\n");
       return(0);    
    }

我不知道为什么IF表达式是错误的。

1 个答案:

答案 0 :(得分:0)

您正在尝试比较有符号整数int和无符号整数size_t。 遵循C整数提升规则,i被提升为无符号整数,因此包装到一个非常大的数字。将它与右侧的小值进行比较时,结果为false。