Многие аспекты языкового стандарта таковы, как они есть, потому что Комитет по стандартам крайне не хотел запрещать компиляторам вести себя так, как может полагаться существующий код.Если существует код, который будет полагаться на поведение своего дополнения, то требование того, чтобы компиляторы вели себя так, как если бы базовое оборудование использовало дополнение двух, сделало бы невозможным запуск старого кода с использованием более новых компиляторов.
Решение, которое соответствуют стандартамКомитет, увы, пока не счел нужным реализовать, позволил бы коду указывать желаемую семантику для вещей способом, не зависящим от размера слова машины или характеристик оборудования.Если поддержка кода, который опирается на поведение своего дополнения, считается важной, разработайте средство, с помощью которого код мог бы явно требовать поведения своего дополнения независимо от базовой аппаратной платформы.При желании, чтобы избежать чрезмерного усложнения каждого отдельного компилятора, укажите, что определенные аспекты стандарта являются необязательными, но соответствующие компиляторы должны задокументировать, какие аспекты они поддерживают.Такая конструкция позволила бы компиляторам для компьютеров с одним дополнением поддерживать как поведение двух с дополнением, так и поведение своих дополнений в зависимости от потребностей программы.Кроме того, это позволило бы перенести код на две машины с комплементом с компиляторами, которые, как оказалось, включали поддержку своих.
Я точно не знаю, почему Комитет по стандартам еще не разрешилспособ, которым код может определять поведение способом, независимым от базовой архитектуры и размера слова (чтобы код не имел некоторых машин, использующих семантику со знаком для сравнений, где другие машины будут использовать семантику без знака), но по какой-то причине им еще предстоитСделай так.Поддержка представления своего дополнения является лишь частью этого.