Wir wissen, dass dies sizeof
ein Operator ist, der zum Berechnen der Größe eines Datentyps und Ausdrucks verwendet wird. Wenn der Operand ein Ausdruck ist, können die Klammern weggelassen werden.
int main()
{
int a;
sizeof int;
sizeof( int );
sizeof a;
sizeof( a );
return 0;
}
Die erste Verwendung von sizeof
ist falsch, während andere richtig sind.
Wenn es mit gcc kompiliert wird, wird die folgende Fehlermeldung ausgegeben:
main.c:5:9: error: expected expression before ‘int’
Meine Frage ist, warum der C-Standard diese Art von Betrieb nicht zulässt. Wird sizeof int
es zu Mehrdeutigkeiten kommen?
sizeof +(int)a
hat den Vorteil gegenüber dem *&
tatsächlichen Kompilieren ;-)
+
. Zum Beispiel ist es sizeof +(char)a == sizeof(int)
aufgrund der Ganzzahl-Heraufstufung wahrscheinlich weniger fehleranfällig, nur in Klammern zu setzen, wenn Sie sich überhaupt Gedanken über den Ausdruck machen, dessen Größe Sie verwenden möchten. Ich bin mir also nicht sicher, ob ich es "eine Verwendung" nennen würde, obwohl ich
sizeof (int)a
.