1

最後の行はどういう意味ですか?

a=0;
b=0;
c=0;

a && b++;
c || b--;

この質問を変更して、より興味深い例で説明できますか?

4

2 に答える 2

10

あなたが与えた例について: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
于 2010-05-02T20:46:38.003 に答える
1
a && b++;    is equivalent to:  if(a) b++;

c || b--;    is equivalent to:   if(!c) b--;

しかし、このような表現を書いても意味がありません。それはより良いコードにコンパイルされず、たとえ短く見えても、ほとんどすべての場合で読みにくくなります。

于 2010-05-03T18:18:26.907 に答える