C语言中a的ASCII码加200输出字符为什么是> 要详细讲解。我是位初学者,望各位高手多多指教。灰常谢谢啊!

如题所述

#include<stdio.h>
void main()
{
char i;
i=200+'a';
printf("%d\n",i);
printf("%c\n",i);
}
//这是c源码;地下是i=200+'a'句代码的反汇编代码
mov eax,0C8h ;把(0c8h 16进制)200放到eax寄存器
add eax,61h ;eax寄存器加上a的ascii码值(61h 十六进制)
;0c8h和61h相加后eax的值为129h即eax的低位地址al的值为29h
mov byte ptr [ebp-4],al
;因为 i是char型 只占一个字节 而eax寄存器是四个字节,所以只把低字节的al放入到i中。也就是i的值为29h,即ascii码'(',十进制41.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-11
写了代码实际测试了下。
#include<stdio.h>
void main()
{
char i;
i=200+'a';
printf("%d\n",i);
printf("%c\n",i);
}
打印出的结果分别是“41” 和“)”。
在DOS窗口下 确实打印出的那个“)”却更像是“>”。但实际情况应该是“)”而不是“>”。本回答被网友采纳
第2个回答  2012-11-11
小a的ASCII是97 加200就是297 了,ASCII最大是255 怎么会有297
相似回答