2017-11-25 19 views
0

コードの一部に見ながら、私はこの行を見た:この余分な括弧は何をしますか?

if ((b = a)) { /* statements */ } 

文脈を読むと、私が知っているその意図は、このようなものです:

b = a; 
if (b != 0) { /* statements */ } 

私は2行以上の簡素化を図ることができる知っています最初のコードブロックに入れますが、2つの括弧のペアはなぜですか?冗長ではないでしょうか?割り当てが(開発者が===を逃した場合)(当時)の条件として評価されるべきであること、

if (b = a) { /* statements */ } 

答えて

1

通常1は、コンパイラから警告を回避するためにそれを行う:私はこれは完全にOKだと思います

警告:代入の周りの括弧は、真理値として

、より多くの指標

何かを使用することをお勧め

int c = !!(b = a); // condition 

if (!!(b = a)) { 
関連する問題