-
- Почему же враньё? Я так понимаю: "int8_t a, b; int16_t c = (int16_t)a * b;" вполне себе нормально работает. Если компилятор не подставил туда инструкцию типа 8x8=16 - это дурной компилятор, язык Си тут ни при чём. - SciFi(17.01.2020 12:43)
- "результат выражения не бывает длиннее самого длинного из операндов". Твой пример можно написать и без приведения к int16_t: il-2(40 знак., 17.01.2020 12:50)
- Можно. Тогда у произведения в старшем байте будет ноль (или 0xFF - размноженный бит знака). Но зачем? - SciFi(17.01.2020 13:10 - 13:20)
- Семен Семеныч!!! От тебя я даже не ожидал такой прорухи :-) Проверь!!! - il-2(17.01.2020 13:51)
- А, ну да, int же. - SciFi(17.01.2020 13:52)
- Семен Семеныч!!! От тебя я даже не ожидал такой прорухи :-) Проверь!!! - il-2(17.01.2020 13:51)
- Можно. Тогда у произведения в старшем байте будет ноль (или 0xFF - размноженный бит знака). Но зачем? - SciFi(17.01.2020 13:10 - 13:20)
- "результат выражения не бывает длиннее самого длинного из операндов". Твой пример можно написать и без приведения к int16_t: il-2(40 знак., 17.01.2020 12:50)
- Почему же враньё? Я так понимаю: "int8_t a, b; int16_t c = (int16_t)a * b;" вполне себе нормально работает. Если компилятор не подставил туда инструкцию типа 8x8=16 - это дурной компилятор, язык Си тут ни при чём. - SciFi(17.01.2020 12:43)