这是一个关于C语言字符的问题


#include<stdio.h>
/* zheng int is divided yinshu*/
#include<conio.h>

int   main()
{    char a=179,b=219;
    printf("%c",a);
        printf("%c",b);

  getch();
  return 0;
}

上面是我写的代码,我看程序案例说,这两个阿斯卡码会产生些图案。
如图
图片说明

但是我运行自己写的后
图片说明

为啥子会这样呢,求解

>128的编码叫做扩展ascii编码,里面包括了制表边线、各种浓度的色块符号和各种数学、标点符号。
dos时代的软件,在字符模式下显示各种软件界面,靠的就是这些特殊符号来模拟界面。
但是不幸的是,这些编码和汉字编码重叠,如果你要显示为特殊符号,则显示中文就是乱码,如果你要显示中文,那么,就显示不出来这些特殊符号。
可以通过设置控制台的代码页来切换。

因为这个汉字的编码是GBK编码,汉字占个两个字节,刚好这两个字符组成了“驰”字的编码。
你可以用记事本(注意是WIndows自带的记事本),输入驰 一个汉字,保存,之后用winhex或其他可以参看16进制的工具看这个文本文件的十六进制编码,
就是b3db
十六进制b3 就是十进制 179
十六进制db 就是十进制 219.

注意: 记事本保存的是ANSI编码,也就是中文系统下的GBK.

你可以先看看ASCII表,里边最大为126,这个题目中给的值都大于126,所以输出的就是这样了,乱码