Что такое sizeof(), встроенный в Arduino HIGH и LOW?

Может быть, это глупый вопрос, но мне любопытно. Я решил проверить это сам и получил значение 2 как для HIGH, так и для LOW. Почему на выходе должно быть 2?

, 👍0


1 ответ


Лучший ответ:

1

В платах Arduino AVR HIGH и LOW в настоящее время являются макросами:

https://github.com/arduino /ArduinoCore-avr/blob/1.6.23/cores/arduino/Arduino.h#L40-L41

#define HIGH 0x1
#define LOW  0x0

Это означает, что sizeof(HIGH) эквивалентен sizeof(0x1). 0x1 — это целочисленная константа. Тип целочисленных констант по умолчанию — int. На 8-битном микроконтроллере, таком как ATmega2560, используемом в Arduino Mega, целое число составляет 16 бит.

Вот почему sizeof(HIGH) возвращает 2 (16 бит / 8 бит/байт = 2 байта).

,