Wir wissen, dass dies sizeofein 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 sizeofist 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 intes zu Mehrdeutigkeiten kommen?
sizeof +(int)ahat 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.