Возможно ли для переменной указателя p, что p < (p + 1) является ложным? Пожалуйста, объясните свой ответ. Если да, при каких обстоятельствах это может случиться?
Мне было интересно, может ли p + 1 переполняться и быть равно 0.
Например. На 64-битном ПК с GCC-4.8 для программы на языке C:
int main(void) {
void *p=(void *)0xFFFFFFFFFFFFFFFF;
printf("p :%p\n", p);
printf("p+1 :%p\n", p+1);
printf("Result :%d\n", p<p+1);
}
Он возвращает:
p : 0xffffffffffffffff
p+1 : (nil)
Result : 0
Поэтому я считаю, что это возможно для этого случая. Для недопустимого местоположения указателя это может произойти. Это единственное решение, о котором я могу думать. Есть ли другие?
Примечание: Никаких предположений не делается. Рассмотрим любой компилятор/платформу/архитектуру/ОС, где есть вероятность, что это может произойти или нет.