gpt4 book ai didi

c++ - 为 "adjacent"变量赋值时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:22 25 4
gpt4 key购买 nike

在此代码中,我首先描述了 int a 并为其赋值 9,然后我声明了另一个 int b,然后我将值 3 赋给 *(&b-1) 所以 (&b-1) 指的是 &a然后我打印 a 的值然后它只打印 9 但是当我在代码中添加新行时(第 6 行)即首先打印 a 然后将值 3 分配给 (&b-1) 然后它将 a 更新为 3 和打印它。那么为什么会这样呢?

#include <iostream>
using namespace std;
int main() {
double a, b;
a = 9;
//cout<<&a<<" "<<a << endl ;
*(&b - 1) = 3;
cout << a << " " << &b - 1 << " ";
cout << &a;
}

最佳答案

so (&b-1) refers to &a

不,那不是 C++ 的工作方式。

您不能像这样“导航”堆栈帧,因为 C++ 是一种抽象并且没有堆栈帧。

您在这里所做的是假装 b 是指向数组第二个(或后面的)元素的指针,并尝试获取该数组中前一个元素的值。正如我们所知,您实际上并没有数组。

So why it's happening like this?

这就是为什么。你对编译器撒了谎,现在它吓坏了。

是的,它确实很关心这种事情!

关于c++ - 为 "adjacent"变量赋值时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53158029/

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