Что должно произойти с отрицанием size_t (то есть `-sizeof (struct foo)`))?
Я имею дело с некоторым кодом на работе, который включает в себя выражение в форме
-(sizeof(struct foo))
то есть отрицаниеsize_t
и мне непонятно, что стандарты C и C ++ требуют от компиляторов, когда они это видят. В частности, оглядываясь здесь и в других местах,sizeof
возвращает беззнаковое целое значение типаsize_t
, Я не могу найти какой-либо четкой ссылки на указанное поведение при отрицании целого числа без знака. Есть ли и если да, то что это?
Изменить: Хорошо, так что есть несколько хороших ответов относительно арифметики для типов без знака, но не ясно, что это на самом деле так. Когда это отрицает, работает ли оно на целое число без знака или преобразовывает его в тип со знаком и что-то делает с этим? Должно ли поведение ожидать от стандартов "представьте, что это отрицательное число аналогичной величины, а затем примените" переполнение "? правила для значений без знака & quot ;?