warning: suggest parentheses around assignment used as truth value


変換元:原文アドレス

  
  
  
  
  1. while(*s++ = *t++) 
  2.     ; 

この文は非常に古典的で簡潔なポインタ操作文ですが、gccコンパイラの下で警告が表示されます.
warning: suggest parentheses around assignment used as truth value
理由:C言語では0ではなくTRUEを表し,逆にFALSEである.上の文は*sの値で最後の判断に使用されます.しかし、長期的なプログラミングの実践は、人々がよく「=」と「==」の使用に手違いがあることを教えてくれたので、gccコンパイラは、手違いではなく「=」であり、故意であることを明確にコンパイラに伝えるように要求した.
私たちの文は上記のように「==」ではないので、以下のスタイルに変更するだけでいいです.
 

  
  
  
  
  1. while((*s++ = *t++)
  2.     ; 

参照先:
1、http://www.network-theory.co.uk/docs/gccintro/gccintro_94.html
2、http://darkmomo.blogspot.com/2008/05/suggest-parentheses-around-assignment.html