Digispark + ds18b20 + шим

Тема в разделе "Микроконтроллеры AVR", создана пользователем kirill_vector, 29 июн 2024 в 17:09.

  1. parovoZZ

    parovoZZ Гуру

    мне всегда казалось, что это называется неявной типизацией.
    Впрочем, если количество сдвигаемых влево разрядов не превышает разрядность операнда, то приведения к другому типу не происходит.
     
  2. parovoZZ

    parovoZZ Гуру

    БСЭ сообщает, что всё-таки
     
  3. Asper Daffy

    Asper Daffy Иксперд

    Напрасно Вам так казалось. В этом языке (C++) нет никакой "неявной типизации".
    Блин, я уже дважды Вам сказал, повторю в третий раз: в С++, если операнды операции сдвига короче типа int, они всегда приводятся к типу "не короче int" (int или unsigned) перед операцией. В этой фразе есть что-то непонятное? Или там есть что-то про количество разрядов? Чего Вы всё время какую-то отсебятину придумываете?

    Впрочем, мне всё равно, я Вам сказал как оно есть, а Вы можете верить в невидимого розового единорога, мне-то что?
     
  4. Asper Daffy

    Asper Daffy Иксперд

    Не, ну я просто не знал, что это форум сайта БСЭ. Спасибо, теперь буду знать :)
     
  5. parovoZZ

    parovoZZ Гуру

    про плюсы не знаю ничего. Но на сях для авр сдвиг влево с последующей записью в восьмиразрядную переменную не приводит к операциям с типом int. По крайней мере этого не видно в дизасме и таких машинных команд не видно в языке ассемблера.
    Что там происходит в 32-х битной архитектуре - не знаю. На руках есть ESP32 RISC-V, но не было нужды так глубоко копать. Но даже и здесь я сильно сомневаюсь, что при озвученных выше условиях будет создан код, оперирующий словом, а не байтом.
     
  6. Asper Daffy

    Asper Daffy Иксперд

    Приводит тогда, когда это нужно (когда это может отразиться на результате). А когда не нужно, срабатывает обычная оптимизация. Впрочем, я уже Вам сказал - я говорю то, что есть. Ваше право не верить. На Вашем месте я бы попросил привести пример, где это чётко видно, но Вам похоже, этого не нужно. Мне - тем более.
     
  7. parovoZZ

    parovoZZ Гуру

    я прекрасно знаю, что если переменная 2-х байтовая или выше, то и сдвиг уйдёт в старший байт автоматически.
    ыыы
     
  8. Asper Daffy

    Asper Daffy Иксперд

    Рад за Вас!