可以错误地使用赋值运算符而不是比较运算符的地方,= Vs ==



我正在做一个C++编译器项目,我需要在可能错误使用赋值运算符而不是比较运算符的地方标记警告。 在if语句中进行比较时,为了检查变量a10有时我们错误地键入 if(a=10),这将导致语句总是trueif而我只想在a10时才为真。我能想到的一些情况是:

  1. if(var = a),逻辑上应该是if( var==a )
  2. while(var = a )
  3. for(;var=a;)
  4. do{}while(var=a)
  5. var=a? "some XYZ": "some ABC"

您能否帮助我解决可能发生此逻辑错误的更多情况,用户应该使用==并且错误地使用了=

我最近遇到的一个讨厌的问题是assert (a=b)。之所以如此令人讨厌,是因为断言中陈述的假设是两者已经相等,因此该陈述很可能是无害的。但如果不是,这将为您设置一个讨厌的调试会话,因为调试版本在功能上与发布版本不同。

最新更新