作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我期待的输出是A B C Dw x y z
它与 cout 的处理顺序有关吗,我的意思是从左到右还是从右到左。
#include <iostream>
using namespace std;
void dummy_func1() {
char a = 'a';
char b = 'b';
char c = 'c';
char d = 'd';
cout<<&a<<" "<<&b<<" "<<&c<<" "<<&d<<endl;
}
char w = 'w';
char x = 'x';
char y = 'y';
char z = 'z';
void dummy_func2() {
cout<<&w<<" "<<&x<<" "<<&y<<" "<<&z<<endl;
}
int main()
{
dummy_func1();
dummy_func2();
}
abcd bcd cd d
w xw yxw zyxw
最佳答案
将 char 值传递给 cout
时,您应该省略 &
。
您有效地传递了一个 char*
,而 cout
将其解释为一个以 null 结尾的字符串。
您的程序没有崩溃的事实仅仅是因为内存恰好由 C 运行时布局。
如您所见,堆内存和栈内存中值的顺序是相反的,但这完全是偶然的,只有当您想深入了解 C/C++ 的内部时才会感兴趣。 :)
关于c++ - 我只是期待打印 char 值。发生了什么事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56297654/
我是一名优秀的程序员,十分优秀!