【发布时间】:2019-10-28 16:14:51
【问题描述】:
在打印 &a (cout<<&a) 时,编译器给出输出“Z”,但是当我们在打印字符地址之前打印字符时,它给出的输出(cout<<a<<" "<<&a) 为“Z ZZ”。我知道 cout 对字符地址的处理方式不同,即在获取字符地址时,它不会打印该地址,而是打印该地址处的内容。请帮助我解决我在这里缺少的概念。这是代码sn-p:
#include <iostream>
using namespace std;
int main() {
char a = 'Z';
cout<<a<<&a;
return 0;
}
【问题讨论】:
-
我问你,为什么第三个
Z不能是垃圾值? -
我没有得到你得到的“垃圾值”。 onlinegdb.com/r1Znrc49S
-
您正试图预测未定义的行为。根据定义,这是徒劳的。
-
仅仅因为你多次看到相同的输出并不意味着它有保证。未定义的行为只是未定义的,也就是任何事情都可能发生
-
因为它是未定义的行为。任何事情都有可能发生。
标签: c++ c++11 pointers memory-address