#include <stdio.h>
int main(void)
{
int i=-3,j=2,k=0,m;
m=++i||++j&&++k;
printf("%d %d %d %d",i,j,k,m);
}
出力:
-2 2 0 1
なぜK = 0?私が思うから& &の演算子のためにも実行されると思いますか?
#include <stdio.h>
int main(void)
{
int i=-3,j=2,k=0,m;
m=++i||++j&&++k;
printf("%d %d %d %d",i,j,k,m);
}
出力:
-2 2 0 1
なぜK = 0?私が思うから& &の演算子のためにも実行されると思いますか?
Cは++i
がゼロではないので、それは真であり、||
演算子の左辺であるため、右辺に何があってもわかります本当。したがって、C(および類似の言語の束)は、右辺を評価することを気にせず、ただちに真を返す。 ++k
は評価されないので、k
は変更されず、m=++i||++j&&++k;
ステートメントの後にはまだ0
です。
彼は['&&'が '||'](http://en.cppreference.com/w/cpp/language/operator_precedence)より高い優先順位を持つことを知る必要があるかもしれないので、式は '(++ i )|| (++ j && ++ k) ' –
なぜ読みにくいコードを書いていますか? –