C语言强制类型转换后两次输出数组不一样

2025-01-01 01:45:29
推荐回答(2个)
回答1:

就你写的代码,第一次输出结果为 5 0 第二次输入结果为5 5 。。。
你的Plain数组中有效值只有Plain[0]和Plain[1],请理解/和%的区别,以及C对待字符是当做整数对待的可以查看ASC码表,输出的结果不同主要是因为/和%,第二次for循环
y=char(Plai[k]%10)+ '0';//k=1 plai[1]=='7'==55 Plai[k]%10==5!!
Plain[i+1]=y;
printf("%c",Plain[i+1]);

回答2:

#include 

void main()
{
int i=0;
    //int  m[20];
    unsigned char Plai[2]={'2','7'};  
unsigned char Plain[200];  
unsigned char y;

for (int k=0;k<2;k++)
 {
//i=0;   错在这里
y=char(Plai[k]/10)+ '0';

Plain[i]=y;
printf("%c",Plain[i]);

y=char(Plai[k]%10)+ '0';

Plain[i+1]=y;
printf("%c",Plain[i+1]);

i=i+2; 
 
if(k==1)
{
printf("\n");
for (i=0;i<4;i++)
{
printf("%c",Plain[i]);

printf("\n");

}
}