关于char!
char a= 'abc ';
cout < <a < <endl;
输出的是 c
为什么??
[解决办法]
呵呵,都到不了汇编层次。
编译器直接就把 'abc '转成了一个字符字面常量。
具体编译器怎么转就不知道了
[解决办法]
这是汇编以后的结果,编译器的设置不同生成的代码可能不同。
00401000 /$ 55 push ebp
00401001 |. 8BEC mov ebp, esp
00401003 |. 51 push ecx
00401004 |. C645 FC 63 mov byte ptr [ebp-4], 63 //a=0x63h
00401008 |. 68 60184000 push 00401860
0040100D |. 8A45 FC mov al, byte ptr [ebp-4]
所以说这个问题根本到不了汇编层次
char a= 'abc ',编译器直接生成了字面值常量0x63赋给变量a,在汇编层次上是看不到 'abc '中的其他两个字符。
不过编译器为什么要生成‘c’而不生成 'a '或者 'b '就不清楚了。