lingluan8 2024-02-29 17:44 采纳率: 0%
浏览 4

C代码++y||++x

img


求指教,为啥x=10不是11啊。今年面试题我写的x=11,y=11,z=1。

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-02-29 17:45
    关注

    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 = 11
    • y = 11
    • z = 12

    如果你想要同时递增 x 和 y,并且 z 等于它们的和,应该这样写:

    int x, y, z;
    x = y = 10;
    z = x + y; // 或者 z = ++x + ++y; 如果你希望先递增
    

    这样,z 的值就会是 20。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月29日