Ich mache ein C++ - Compilerprojekt, in dem ich Warnungen an Stellen kennzeichnen muss, an denen der Zuweisungsoperator statt des Vergleichsoperators falsch verwendet werden kann. .e.g während Vergleich in if
Aussage zu tun, geben wir falsch Variable a
als 10
manchmal zu überprüfen, ob (a
= 10
), die in if
Anweisung führt immer true
während ich nur, wenn a
ist 10
wahr sein wollte. Einige der Fälle, die ich denken kann, sind:Orte, an denen der Zuweisungsoperator statt des Vergleichsoperators falsch verwendet werden kann, = Vs ==
if(var = a)
, logisch sollte esif(var==a)
while(var = a)
for(;var=a;)
do{}while(var=a)
var=a? "some XYZ": "some ABC"
Können Sie mir bitte helfen sein mit den mehr Fällen, in denen dies Logischer Fehler kann auftreten, wo der Benutzer ==
verwenden sollte und versehentlich =
wurde verwendet?
Wie wäre es andersherum, wo Vergleich anstelle von Zuweisung verwendet wurde? Ich habe es ein paar Mal gesehen. –
Was Ihr "Problem" betrifft, können einige Compiler dies erkennen und davor warnen. Und es gibt viele gute statische Analysewerkzeuge, die solche Probleme (und viele mehr) erkennen. –
Ich würde meine Zeit damit nicht verschwenden, wenn ich du wäre. Manchmal * wollen * Sie eine Zuweisung als Schleife bedingt, wie in String-Kopier-Idiomen. Manchmal möchten Sie einen Vergleich, wenn Sie normalerweise eine Aufgabe schreiben. IMHO-Leute müssen nur den Unterschied haben, der ihnen eingetrichtert wird. – Bathsheba