unsigned char channelNum=49;
则编译器会将ASCII码49存入变量channelNum,实际channelNum表示字符1,所以下次如果以%c形式打印出来,则输出1。
e.g:
查看代码
unsigned char channelNum=49;
#include"bsp_seg.h"
#include"bsp_Init.h"
//------------------------------------
//将segString的所有字符 转换为 数码管段码,存储到segBuf数组中。
void segTran(unsigned char *segString, unsigned char *segBuf)
{
unsigned char temp=0;
unsigned char i=0;
unsigned char j=0;
for(i=0;i<8;i++,j++)
{
switch(segString[j])
{
case '0': temp=0x3F;break;
case '1': temp=0x06;break;
case '2': temp=0x5B;break;
case '3': temp=0x4F;break;
case '4': temp=0x66;break;
case '5': temp=0x6D;break;
case '6': temp=0x7D;break;
case '7': temp=0x07;break;
case '8': temp=0x7F;break;
case '9': temp=0x6F;break;
case 'E': temp=0x79;break;
case 'C': temp=0x39;break;
case 'F': temp=0x71;break;
case 'N': temp=0x37;break;
case 'U': temp=0x3E;break;
case '-': temp=0x40;break;
case ' ': temp=0x00;break;
default: temp=0x00;break;
}
if(segString[j+1] == '.')
{
temp |= 0x80;
j++; //并跳过segString中的下一位
}
segBuf[i] = temp;//将转换后的段码值传递给Buf存储
}
}
sprintf(segString, "U-%c",channelNum);//以%c输出,则系统会寻找ASCII码49对应的字符,所以输出U-1
sprintf(segString, "U-%d",(unsigned int)channelNum);//系统会将字符型数据49强制转换为整型,以%d形式输出,则为U-49
ASCII参考表:点击跳转
标签:字符,49,channelNum,unsigned,C语言,char,ASCII From: https://www.cnblogs.com/YYZYCS/p/18105944