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 является ложным.
Вы пытаетесь сравнить знаковое целое int
и целое число без знака size_t
. Следуя C целым правилам продвижения, i
получает повышение до беззнакового целого числа и, следовательно, обертывается на очень большое число. Когда вы сравниваете это с небольшим значением с правой стороны, результат будет ложным.