C++ 以下代码中出现了一个奇怪的结果(为什么输入结果';b';) int main(无效) { int数组[]={1,2,3,4,5,6,7}; int i=-1; 如果(i

C++ 以下代码中出现了一个奇怪的结果(为什么输入结果';b';) int main(无效) { int数组[]={1,2,3,4,5,6,7}; int i=-1; 如果(i,c++,c,C++,C,您试图比较有符号整数int和无符号整数size\t。 按照C整数提升规则,i被提升为无符号整数,因此包装为一个非常大的数字。当您将其与右侧的小值进行比较时,结果为假。为什么您认为相反?此处解释: int main(void) { int array[] = {1,2,3,4,5,6,7}; int i = -1; if(i <= (sizeof(array)/sizeof(array[0])) -2) printf("

您试图比较有符号整数
int
和无符号整数
size\t

按照C整数提升规则,
i
被提升为无符号整数,因此包装为一个非常大的数字。当您将其与右侧的小值进行比较时,结果为假。

为什么您认为相反?此处解释:
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);    
    }