Что должно произойти с отрицанием size_t (то есть `-sizeof (struct foo)`))?

Я имею дело с некоторым кодом на работе, который включает в себя выражение в форме

-(sizeof(struct foo))

то есть отрицаниеsize_t, и я'Мне неясно, что стандарты C и C ++ требуют от компиляторов, когда они это видят. В частности, оглядываясь здесь и в других местах,sizeof возвращает беззнаковое целое значение типаsize_t, Я могу't найти какую-либо четкую ссылку на указанное поведение при отрицании целого числа без знака. Есть ли и если да, то что это?

Редактировать: Хорошо, так что есть некоторые хорошие ответы относительно арифметики на неподписанных типах, но это 'Не ясно, что это на самом деле так. Когда это отрицает, работает ли оно на целое число без знака или преобразовывает его в тип со знаком и что-то делает с этим? Такое поведение ожидать от стандартов?представить его's отрицательное число аналогичной величины, а затем применить 'переполнение» правила для беззнаковых значений "?

Ответы на вопрос(6)

Ваш ответ на вопрос