关于VC6.0版ASCII码在源代码中使用紊乱的测试

本文通过多个C语言测试案例探讨了字符型变量溢出时的现象,包括输出乱码、问号及意外的汉字字符等问题,并分析了这些现象背后的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一个测试:

#include<stdio.h>
int main()
{
	char a;
	a=123;
	printf("%c\n",a);
    return 0;
}

运行结果:正常输出{


但是,当字符型变量a的值逐渐增加时,结果出现了不同。


第二个测试:

#include<stdio.h>
int main()
{
	char a;
	a=129;
	printf("%c\n",a);
    return 0;
}

运行结果:当c的值超过128时,运行结果为?


当我们用变量同时存在时,会怎么样呢?

我们首先引入一个变量,用第一个变量在正常范围,第二个在非正常范围测验


第三个测试:

#include<stdio.h>
int main()
{
	char a,b;
	a=123;
	b=131;
	printf("%c%c\n",a,b);
    return 0;
}

运行结果:{?    看来,超过128的代码依旧识别不出来


再次利用两个都不在正常范围的实验。


第四个测试:

#include<stdio.h>
int main()
{
	char a,b;
	a=129;
	b=131;
	printf("%c%c\n",a,b);
    return 0;
}

运行结果:一个不常用的汉字。


经多次试验后,两个不在正常范围的字符型变量连续输出时会出现很多不同的汉字,而且两个字符对应一个汉字。


让我们在引入一个变量。分别进行两个实验。1)三个都在非正常范围内。2)第一个与第三个非正常第二个正常。


第五个测试:

#include<stdio.h>
int main()
{
	char a,b,c;
	a=129;
	b=131;
	c=153;
	printf("%c%c%c\n",a,b,c);
    return 0;
}

运行结果:一个汉字+一个?

第六个测试:
#include<stdio.h>
int main()
{
	char a,b,c;
	a=129;
	b=123;
	c=153;
	printf("%c%c%c\n",a,b,c);
    return 0;
}

运行结果:依旧为一个汉字+一个?




测试结束。
问题:1)为什么会使用紊乱?
      2)为什么会形成问号?
      3)为什么两个一起时会形成汉字?
      4)为什么三个一起时一个正常的和非正常的依旧会形成汉字?




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值