Belegt ein Integer grundsätzlich mehr Speicher als z.B. ein Short?

Hallo Zusammen, verbrauche ich unnötig Speicherplatz wenn ich meine Pins in Variablen/ Konstanten definiere?

const int buttonPin = 10;
int buttonPin = 10;

Die Zahl 10 ließe sich ja z.B. in einem Short ablegen? Spart dies Speicher, oder wird nur immer so viel belegt wie auch gebraucht wird? Habe Bedenken, dass der Typ Integer auch Speicher reserviert?

Richtig wäre; const byte buttonPin = 10;

Und was der Compiler daraus macht, ist seine Sache. Const Dinge optimiert er meist weg.

Spart dies Speicher, oder wird nur immer so viel belegt wie auch gebraucht wird?

Was für eine Frage..... irgendwie verrückt .... Verwende den Datentype, den du für deine Anwendung brauchst!

Schau dir den generierten ASM Code an, dann sollte es klar werden, was der Compiler tut.

magie004: Die Zahl 10 ließe sich ja z.B. in einem Short ablegen?

Wie groß ein int oder ein short sind, ist plattformabhängig.

Auf der 8-Bit AVR ATmega Plattform sind "int" und "short" vollkommen identisch:

Verwende einen 8-Bit Datentyp, wenn Du meinst, dass ein 16-Bit Datentyp zuviel Speicher braucht!

In C ist (anders als z.B. in java) ziemlich undefiniert, wie groß short, int, long sind und wird dem verwendeten Compiler und der Ziel-Hardware überlassen:

Bei den 8-bit Microcontrollern (attiny, atmega, also Arduino Uno, Mega usw. ) ist int und short dasselbe (int16_t), char ist ein int8_t, und long ist ein int32_t.

const hilft dem Compiler sehr beim Optimieren, da es viele Fälle gibt, wo der Wert direkt im Code und damit im Flash-Speicher bleiben kann.

Bei meinen Experimenten ist mir schon untergekommen, daß der Compiler selbständig int in byte umwandelt - erkennbar an der Speicherbelegung.