Typanforderungen in C++
In einem Vorzeichenausdruck muß der Ausdruck nach dem Vorzeichen einen passenden Zahlentyp (einen numerischen Typ), wie ›int‹ oder ›double‹ haben. Ein Ausdruck mit dem Typ ›::std::string‹ ist dort nicht erlaubt. Das Syntaxdiagramm beschreibt also nur einige – aber nicht alle – Anforderungen an ein korrektes Programm. Zusätzlich gibt es auch noch gewisse Typanforderungen.
main.cpp
#include <iostream>
#include <ostream>
#include <string>using namespace ::std::literals;
int main() { ::std::cout << -"65"s << "\n"s; }
- Fehlermeldung der C++ -Implementation (vereinfacht und übersetzt)
main.cpp, Zeile 5:
-"65"s
^
Der Operand des Minusoperators hat einen Typ, der fuer Operanden dieses Operators nicht zulaessig ist.
Wir sehen hier, wie Datentypen helfen, Fehler in Programmen automatisch zu erkennen! Die Prüfung auf passende Typen durch den Compiler wird auch als statische Typsicherheit bezeichnet.
Außerdem sieht man, daß Fachbegriffe, wie “type ” oder “argument ”, in Fehlermeldungen verwendet werden. Dies ist eine Motivation zum Erlernen dieser Fachbegriffe.
Übungsfragen
? Übungsfrage
Welche der folgende Ausdrücke erfüllen nach dem oben Gesagten die Typanforderungen für einen Vorzeichenausdruck?
A »-2«
B »-2.0«
C »-"2"s«