-
- Вообще-то стандарт С не обещает что при сдвиге вправо обязательно
будет происходить расширение знака, это implementation-defined. ЫЫyкпy(312 знак., 31.03.2025 13:32)
- И это прекрасный пример того случая, когда следует проигнорировать
стандарт. Чтобы не потерять сон, можете добавить assert_static((-1
>> 1) < 0). - SciFi(31.03.2025 13:38)
- спасибо. не буду игнорировать. и пусть компилятор за меня подставит
сдвиг вместо деления. при моём зоопарке камней и компиляторов не
хочу даже думать вместо оптимизатора - Vit(31.03.2025 15:04)
- Любое решение - компромисс. В данном случае потенциально возможная несовместимость принесена в жертву быстродействию и объёму кода. Michael75(401 знак., 31.03.2025 18:08)
- К счастью оно всё-таки defined. Поэтому один раз выяснив как именно оно определено можно не беспокоиться до перехода на другой компилятор или другую архитектуру. - ЫЫyкпy(31.03.2025 13:52)
- спасибо. не буду игнорировать. и пусть компилятор за меня подставит
сдвиг вместо деления. при моём зоопарке камней и компиляторов не
хочу даже думать вместо оптимизатора - Vit(31.03.2025 15:04)
- И это прекрасный пример того случая, когда следует проигнорировать
стандарт. Чтобы не потерять сон, можете добавить assert_static((-1
>> 1) < 0). - SciFi(31.03.2025 13:38)
- Вообще-то стандарт С не обещает что при сдвиге вправо обязательно
будет происходить расширение знака, это implementation-defined. ЫЫyкпy(312 знак., 31.03.2025 13:32)