Size: a a a

2021 July 11

VO

Vyacheslav Olkhovche... in Embedded Group
но емнип то результат операции над типом меньшим чем int -- будет int.
источник

VO

Vyacheslav Olkhovche... in Embedded Group
да, я все правильно помню
источник

VO

Vyacheslav Olkhovche... in Embedded Group
uint8_t x;
       x = 8;
       printf("size %d %d\n", sizeof(x), sizeof(x<<8));
источник

VO

Vyacheslav Olkhovche... in Embedded Group
напечает size 1 4 на 64-битной платформе
источник

h

hold3r in Embedded Group
А на AVR8 ? )
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Проверь
источник

AM

Aleksander Mironov in Embedded Group
Я не бог компиляторов, но вот ИМХО, может да и произойти.
источник

AM

Aleksander Mironov in Embedded Group
Возможно при подобном 0х00 выполняется какойто неявный каст для компилятора.
источник

AM

Aleksander Mironov in Embedded Group
написано это с такой рожей, будто бы если не СИЛИТЬ значение с 0х0000, компилятор начнет терять биты. И он действительно начнет, но вот что 0х0000 тут поможет, я нифига не уверен.
источник

AM

Aleksander Mironov in Embedded Group
Вообще разговор не о том. Это очень дебильный код, сделайте нормально, а не заставляйте кусок говна лежать гармонично.
источник

AM

Aleksander Mironov in Embedded Group
uint16_t MakeWord(uint8_t msbyte, uint8_t lsbyte);
источник

RK

Rasul Kishov in Embedded Group
Имхо, читается зато прям сразу. И ещё ты как бы сразу инициализируешь переменную в ноль (вдруг инициализация мусором произошла) и только потом туда записываешь сдвинутые байты логическим или, который этот мусор не вычистит. Возможно автор хотел от этого защититься.
Но на самом деле, когда у тебя есть uint16_t сдвинутый на 8 бит, то освободившиеся 8 бит все равно будут нулями и все это излишне. Нужно просто написать какнонично и все будет норм)
источник

D

Dr Zlo in Embedded Group
А если uint32_t word = MAKE_WORD..?
источник

D

Dr Zlo in Embedded Group
обнуление переменной перед записью в нее, защита от того что в ней могло быть что-то записано
источник

RK

Rasul Kishov in Embedded Group
Ну, макрос используется, чтобы то что уже записано в две переменные записать в одну 16 битную.
Если использовать каноничную запись с явным привидением типа, то все лишнее все равно будет выброшено
источник

D

Dr Zlo in Embedded Group
если, если, если... код с такими условиями не выглядит надежным
источник

AM

Aleksander Mironov in Embedded Group
Чет не понял, каким образом зануляется переменная. Вот в упор не вижу.
источник

𝔻

𝔻𝕠𝕜𝕒 in Embedded Group
+ 😳
источник

D

Dr Zlo in Embedded Group
Да, все верно, я перегрелся сегодня просто
источник

D

Dr Zlo in Embedded Group
Не нужно там 0х0000
источник