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

时间:2017-11-23 10:21:36

标签: c++ compiler-errors compilation compiler-warnings

我正在做一个C ++编译器项目,我需要在错误使用赋值运算符而不是比较运算符的地方标记警告。 。例如 在if语句中进行比较时,要将变量a检查为10,有时我们会错误地输入if {a = 10),这会导致{if = true 1}}语句总是a而我只有在10if(var = a)时才会成立。我能想到的一些案例是:

  1. if( var==a ),逻辑上应该是while(var = a )
  2. for(;var=a;)
  3. do{}while(var=a)
  4. var=a? "some XYZ": "some ABC"
  5. ==
  6. 是否可以帮助我解决可能发生此逻辑错误的更多情况,用户应该使用=而错误使用Order Deny,Allow DirectoryIndex index.php # Secure text files <Files ~ "\.txt$"> Order allow,deny Deny from all </Files> # Redirect non-www to www: RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] ErrorDocument 404 /404.php RewriteEngine On # All calls go to SSL RewriteEngine On RewriteCond %{ENV:HTTPS} !=on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} # Unless directory, remove trailing slash RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/$ https://www.navanter.com/$1 [R=301,L] # Redirect external .php requests to extensionless url RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ RewriteRule ^(.+)\.php$ https://www.navanter.com/$1 [R=301,L] # Resolve .php file for extensionless php urls RewriteRule ^([^/.]+)$ $1.php [L]

1 个答案:

答案 0 :(得分:5)

我最近遇到的一个令人讨厌的问题是assert (a=b)。之所以如此特别讨厌是因为断言中所述的假设是两者已经相等,所以这种说法很可能是无害的。但是如果它们不是,那么这会让你进行讨厌的调试会话,因为调试版本在功能上与发布版本不同。