Kann man mit dem Integer-Datentyp auch Buchstaben für die Deklaration verwenden?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Antwort lautet nein. Mann kann keine Buchstaben verwenden. Was bedeutet nun A0. A0 ist eine konstante in der ein integer wert gespeichert ist, sodass es für dich einfacher ist. Theoretisch könntest du den Wert Im Internet Recherchieren und den als alternative verwenden.
du bist nicht der einzige der das wissen will:

https://forum.arduino.cc/t/variable-int-with-a0-instead-of-a-number/681553

Woher ich das weiß:Studium / Ausbildung – Information Engineering Studium
wichtigerhelfer 
Fragesteller
 04.01.2023, 20:50

Jetzt habe ich es verstanden!!! VIELEN DANK!!!!

0

A0 ist eine Konstante (die wiederum auf ein Makro mit numerischen Wert verweist). Das heißt, bei der Definition wird deiner sensorPin-Variable der numerische Wert, auf den A0 zeigt (14), zugewiesen. Da die 14 locker in den Wertebereich eines Integer passt, geht das problemlos vonstatten.

Darf man also mit dem Datentyp „Integer“ auch Buchstaben für die Initialisierung verwenden?

Die Datentypen char und int sind miteinander gewissermaßen kompatibel, da jedem Zeichen auch ein numerischer Wert zugeordnet werden kann. Schau dazu in die ASCII-Tabelle. Dort siehst du beispielsweise, das dem kleinen a der Dezimalwert 97 zugeordnet werden kann.

Wenn du nun im Code schreibst:

int a = 'a';
printf("%d", a); // 'a'

ist die Ausgabe 97. Das char-Literal kann implizit zu einer Zahl gecastet werden.

Das geht auch andersherum:

char a = 97;
printf("%c", a); // 97

Mit deiner obigen Situation hat all das aber nichts zu tun.

wichtigerhelfer 
Fragesteller
 04.01.2023, 18:52

Okay, also wird der Buchstabe „A“ in eine Dezimalzahl umgewandelt, sodass das der Integer versteht. Aber wenn man Buchstaben als Wert mit dem Datentyp „Integer“ verwenden kann, weshalb gibt es dann den Datentpen „Char“ ??

0
regex9  04.01.2023, 19:06
@wichtigerhelfer

Der char-Datentyp ist zur Darstellung von Zeichen zuständig, der int-Datentyp für ganze Zahlen. Ich habe oben nur erklärt, dass man beide Typen in den jeweils anderen konvertieren kann und der Compiler damit selbst zurechtkommt (impliziter Typecast). Deswegen ersetzen sie sich nicht gegenseitig.

1