Предупреждение компилятора для унарной операции с unsigned int

У меня есть пример кода, который генерирует следующее предупреждение (компилятор VS2008 с SP1):

предупреждение C4146: унарный оператор минус применяется к беззнаковому типу, результат все еще беззнаковый

Код:

void f(int n)
{
}

int main()
{
    unsigned int n1 = 9;
    f(-n1);
}

Но поскольку функция f принимает свой параметр как int , разве этот код не должен компилироваться без каких-либо предупреждений?

6
задан Naveen 24 November 2010 в 13:18
поделиться