gpt4 book ai didi

c - 后增量和预增量运算符

转载 作者:行者123 更新时间:2023-11-30 21:49:27 24 4
gpt4 key购买 nike

请解释一下这段代码的结果。

//代码a当我在我的笔记本电脑上运行这段代码时,y的值是4。我认为,逻辑上y的值应该是5,因为通过执行x++,它应该返回2而不增加,因为它是后增量,然后当我们添加现在包含的x时一个递增的值,即 3。所以根据我的说法,2+3 是 5。但根据我的 Turbo C++ 3.0 答案是 4。

#include <stdio.h>
void main() {
int x = 2,y;
**int y = x++ + x;** // ans 4
printf("y is :%d", y);
}

//代码B当我运行这段代码时,答案是 6。这里++x 中的 Turbo C++ 3.0 正在获取 x++ 的增量值,这与上面提到的代码相反。从逻辑上讲,这里的答案是正确的,但在上面的代码中却不是。

#include <stdio.h>
void main() {
int x = 2,y;
**int y = x++ + ++x;** //and 6
printf("y is :%d", y);
}

最佳答案

首先,赋值运算符 = 从右到左工作,这意味着如果您编写 x = 2 + 4 + 1; 您的编译器会从最右边开始读取它数字为 1,然后添加 4,依此类推,然后将该值分配给 x

因此,在您的 case 语句中 y = x++ + x; 编译器开始从右侧看到它,即它首先看到 x2然后看到 x++ 即也是 2 因为它是后增量运算符最后它添加它们并将 y 分配为 2 + 24

在第二种情况下,即y = x+++++x;,编译器首先查看++x,并且由于它是预增量运算符,因此它会增加x 变为 1,即 x 现在是 3。在看到 x++ 后,如上所述,因为它是后置运算符,因此在此操作中它将被视为 x 并且该值为 3 (请记住,我们之前将 x 增加了 1),因此编译器将 3 + 3(即 6)分配给 y

关于c - 后增量和预增量运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33487755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com