我只是期待 char 值是 printed.What 发生了什么?
I was just expecting the char values to be printed.What is happening?
我期待的输出是
A B C D
w 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-terminated 字符串。
您的程序没有崩溃的事实仅仅是因为内存恰好由 C 运行时布局。
如您所见,堆内存和栈内存中值的顺序是相反的,但这完全是偶然的,只有当您想深入了解 C/C++ 的内部时才会感兴趣。 :)
我期待的输出是 A B C D w 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-terminated 字符串。
您的程序没有崩溃的事实仅仅是因为内存恰好由 C 运行时布局。
如您所见,堆内存和栈内存中值的顺序是相反的,但这完全是偶然的,只有当您想深入了解 C/C++ 的内部时才会感兴趣。 :)