Win-TC 为什么运行结果是奇怪的数字?

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:21:12
void main()
{
char c1,c2,c3;
c1='a';
c2='b';
c1=c1-32;
c2=c2-32;
c3=130;

printf("\n%c %c %c\n",c1,c2,c3);
printf("%d %d %d\n",c1,c2,c3);
getch();
}

运行结果:
A B ?
65 66 -126

为什么最后的C3是一个奇怪的数字?

如果修改一下:
void main()
{
char c1,c2,c3;
printf("\n%c %c %c\n",c1,c2,c3);
printf("%d %d %d\n",c1,c2,c3);
getch();
}

运行结果又是:
♫ ♥ 2
14 3 50

为什么是这些奇怪的结果呢?

1.变量c3的类型是char,在你的编译系统中char是有符号字符类型,所以当c3被赋值为130时,其实已经被编译器认为是130的补数-126了。可以用一个简单的方法来辨别,如:130与-126的绝对值之和正好是256。
2.变量c1,c2和c3定义后,没有初始化,所以产生了随机数。输出结果就是你看到的那么奇怪了,呵呵。

先解释第一个:
c3定义的是字符型,而赋值的是整形,他并不是一个单一字符

第二个
变量只定义没有赋值,那也就是随机显示了....

♫ ♥ ASCII码中有这些字符。