最後の行はどういう意味ですか?
a=0;
b=0;
c=0;
a && b++;
c || b--;
この質問を変更して、より興味深い例で説明できますか?
最後の行はどういう意味ですか?
a=0;
b=0;
c=0;
a && b++;
c || b--;
この質問を変更して、より興味深い例で説明できますか?
あなたが与えた例について:a
ゼロ以外の場合、インクリメントb
; がゼロの場合c
、デクリメントしますb
。
短絡評価のルールにより、つまり。
右側の引数として関数を使用してこれをテストすることもできます。printf
簡単に観察可能な出力が得られるため、これには適しています。
#include <stdio.h>
int main()
{
if (0 && printf("RHS of 0-and\n"))
{
}
if (1 && printf("RHS of 1-and\n"))
{
}
if (0 || printf("RHS of 0-or\n"))
{
}
if (1 || printf("RHS of 1-or\n"))
{
}
return 0;
}
出力:
RHS of 1-and
RHS of 0-or
a && b++; is equivalent to: if(a) b++;
c || b--; is equivalent to: if(!c) b--;
しかし、このような表現を書いても意味がありません。それはより良いコードにコンパイルされず、たとえ短く見えても、ほとんどすべての場合で読みにくくなります。