gpt4 book ai didi

c - C 中的运算符 PlusPlus

转载 作者:行者123 更新时间:2023-11-30 21:01:40 25 4
gpt4 key购买 nike

正如我所知,运算符++ 在两种情况下有区别:x++和++x;尽管,当我尝试编写这样的代码时:

int x = 5;
int* y = &x;
int value;
value = *y++ + ++*y;

等式末尾的 value 的值为 12。如果我将方程交换为

value = ++*y + *y++;

同样是12,我不明白这个规则。他先做什么?在两种情况下 y 指针指向垃圾。

谢谢,乌利亚。

最佳答案

此行会导致未定义的行为:value = *y+++++*y;
*y++ 相当于 *(y++),因此它递增指针,而不是实际值。
之后,++*y 取消引用y,这会导致未定义的行为。

在第二个示例中,++*y 实际上增加了 y 指向的值。
因此,x 将为 6。之后 *y++ 取消引用 y,这也将给出 6。
这就是第二个示例中计算 12 的原因。 之后取消引用 y 也会导致未定义的行为,因此最好避免这样的代码。

关于c - C 中的运算符 PlusPlus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35009939/

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