
求指教,为啥x=10不是11啊。今年面试题我写的x=11,y=11,z=1。
lingluan8 下午好🌅🌅🌅
本答案参考通义千问
在C++中,++y || ++x 这样的表达式不是一个标准的操作,它不会按照你预期的方式来执行。++ 是前缀递增运算符,表示先增加变量的值再使用它。|| 是逻辑或运算符,用于连接两个布尔表达式。然而,++y 和 ++x 的结果并不是布尔值,它们都是表达式的值。
你的代码中:
int x, y, z;
x = y = 10;
z = ++y++x;
首先,y = ++y 表示先递增 y(y 成为 11),然后将新的 y 值赋给 y(此时 y 仍然是 11)。然后,++x 在 y 被更新之后执行,所以 x 也变成 11。
接着,z = ++y++x 这一行会执行两次递增操作,因为 ++y 先执行,然后是 ++x。由于 y 已经是 11,再次递增不会改变它的值,仍然是 11。而 x 刚好被递增,成为 12。
因此,最终的输出是:
如果你想要同时递增 x 和 y,并且 z 等于它们的和,应该这样写:
int x, y, z;
x = y = 10;
z = x + y; // 或者 z = ++x + ++y; 如果你希望先递增
这样,z 的值就会是 20。