Prateek Krishna Ответов: 1

Как это возможно? Вопрос заключается в том, чтобы "предсказать выход".


#include <iostream>
using namespace std;

int main()
{
    if (sizeof(int) > -1)
        cout << "Yes";
    else
        cout << "No";
    return 0;
}


Что я уже пробовал:

по - моему, ответ должен быть утвердительным.
ut правильный ответ-нет.
как это возможно?

1 Ответов

Рейтинг:
9

Richard MacCutchan

Потому что sizeof оператор возвращает значение без знака. Таким образом, компилятор затем обрабатывает -1 также как беззнаковое значение. Шестнадцатеричное значение -1 равно 0xFFFFFFFF или беззнаковому десятичному 4294967295, что, конечно, намного больше размера целого числа (которое равно 4 (а не 8)). Одна из ловушек смешивания подписанных и неподписанных значений в программном обеспечении.


Prateek Krishna

Спасибо, сэр !
но размер int равен 4 ..

KarstenK

присвойте uint значение -1 и смотрите. :-O

Richard MacCutchan

Вы правы, но это все равно.