bha*_*hir -1 c++ type-conversion
此代码给出输出“AA”。为什么此代码不打印“A”?
int i = 65;
char c = i;
int *p = &i;
char* pc = &c;
cout << pc << endl;
Run Code Online (Sandbox Code Playgroud)
i在堆栈“之后” c;当您打印 a 时,char*它会将其视为以 -NUL结尾的字符串。你的机器是小端的,所以内存布局是:
65 65 0 0 0
c i i i i
Run Code Online (Sandbox Code Playgroud)
由于 65 是 letter 的 ASCII 序号,因此A读起来像一个字符串"AA"(有几个额外的尾随NULs 被忽略),并按原样打印。c从指针读取的结果是未定义的行为,并且只是巧合(你很幸运编译器如何布置内存);永远,永远不要依赖它。
如果您只想打印A,只需pc在打印时取消引用:
cout << *pc << endl;
^ dereferences pc to print only the single character it points to
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |