Warum ist das ok:Erklärung als Bedingung - Hinzufügen von Klammern führt zu Fehlern
if(int i = 1) {
}
... während die folgenden Fehler erzeugt?
if((int i = 1)) {
}
Unter g ++ (4.4.5) letztere gibt: Seeing what class an object is
zu finden Ich versuche:
test.cpp:7: error: expected primary-expression before ‘int’
test.cpp:7: error: expected ‘)’ before ‘int’
test.cpp:9: error: expected ‘)’ before ‘else’
test.cpp:13: error: expected primary-expression before ‘}’ token
test.cpp:13: error: expected ‘;’ before ‘}’ token
übrigens der Grund, wegen dieser Antwort, die ich bin gefragt ist eine Möglichkeit, die Bedingung lesbarer zu machen. Normalerweise würde ich es vorziehen, zum Beispiel:
if((x = y) != 0) {
zu
if(x = y) {
... da es besser lesbar ist und Schweigen Compiler ‚Kommentare‘ was darauf hindeutet, ich hätte den falschen Operator verwendet. Wenn ich eine Deklaration als eine Bedingung verwende, erzeugt es nicht die Warnung, aber die Lesbarkeit scheint noch zu leiden.
Warum würden Sie entweder von diesen zu tun? –
@Robin Welch - Der Anwendungsfall und die Inspiration sind hier: http://stackoverflow.com/questions/4426476/seeing-what-class-an-object-is/4426485#4426485 – sje397