Есть большая разница между функцией, возвращающей -1 и ~ 0?

Рассмотрим две простые функции:

int return0Comp(){
return (~0);
}

int returnNeg1(){
return -1;
}

Я знаю, что в системе с двумя дополнениями, ~0==-1, но из-за того, что система не использует это (это даже случается? *), эти две функции будут возвращать разные значения?

0

Решение

Стандарт гласит [expr.unary.op.10]

Операнд ~ должен иметь целочисленный или незаданный тип перечисления;
результат — дополнение его операнда.

Я прочитал это, что ~ всегда просто инвертирует все биты, поэтому интерпретация результата действительно должна зависеть от используемого представления.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]