C 中的前自增和后自增

问题描述 投票:0回答:1

(D) 假设 x、y 和 z 都是整数变量。执行后,x、y、z会打印什么结果?

int x=6, y=4, z=2;
printf("%d ", ++x || ++y && ++z);
printf("%d %d %d %d", i, z, y, x);

(A )0 6 4 2
(B) 1 7 4 2
(C) 1 2 4 6
(D) 1 2 4 7

为什么答案是D,为什么x和y的预自增运算符失败?

c pre-increment
1个回答
0
投票
  1. ++x 工作正常:

x 的预自增按预期执行,因为它是表达式中的第一个操作数,并且立即对其求值。

2.++y 和 ++z 被跳过:

由于短路,在发现左操作数 (++x) 为 true 后,表达式 (++y && ++z) 的其余部分不会执行。 这是 C 中逻辑运算符的预期行为。

© www.soinside.com 2019 - 2024. All rights reserved.