私は C プログラミング言語の初心者です。最近、論理 AND&&
演算子について読みました。
また、C プログラミング言語では、ゼロ以外の値はすべてTRUEとして扱われることも知っています。
NON-ZERO && NON-ZERO = 1
NON-ZERO && ZERO = 0
ZERO && NON-ZERO = 0
ZERO && ZERO = 0
しかし、次のプログラムを扱っていると、期待される答えが得られません。
int main(){
int x, y, z;
x = y = z = -1;
y = ++x && ++y && ++z;
printf("x = %d, y = %d, z = %d, x, y, z);
return 0;
}
私は期待している
x = 0, y = 0, z = 0
しかし答えは
x = 0, y = 0, z = -1
なぜこの答えが得られるのか、誰か説明してもらえますか?
編集: この質問では、演算子の優先順位については質問していません。