Цитата(Dog Pawlowa @ Dec 28 2015, 05:48)

Я потерял нить, почему? Компилятор вдруг забыл тип переменной?
Потому что для STM8 IAR декларировал разрядность типа 'long long' в 32 бита в отличие например от их же AVR8, где она 64 бита.
Поэтому качестве оператора '<<' будет выступать ассемблерная подпрограмма производящая сдвижку только по 4-м байтам, т.е. 32 бита.
Картина похожая на ту, если к 'unsigned char' прибавлять число, большее 256 и результат вылазит за пределы байта,
только с тем отличием, что при сложении в переменная будет содержать кусок результата по модулю 256,
а при сдвиге механизм сдвижки обнуляет освободившийся хвост, и переменная будет = 0;