永发信息网

在keil c中把变量定义成unsinged char型和定义成unsigned int型对pintf函数的输出有什么影响

答案:3  悬赏:20  手机版
解决时间 2021-01-31 13:16
  • 提问者网友:黑米和小志
  • 2021-01-31 02:27
如果把 Key_State_Value定义成INT8U,在仿真时串口输出的是0,256,512,768,1024.
如果把Key_State_Value定义成INT16U,在仿真时串口输出的是0,1,2,3,4. 这个是我想要的,只是不明白为什么定义成INT8U型就不行呢

完整的程序如下:
#include
#include
#define INT8U unsigned char
#define INT16U unsigned int
sbit Key1 = P1^0;
sbit Key2 = P1^1;
sbit Key3 = P1^2;
sbit Key4 = P1^3;
sbit Key5 = P1^4;
INT8U Key_State_Value;
int main(void)
{
SCON = 0x52;
TMOD = 0x20;
TCON = 0x59;
TH1 = 0x0f3;
while(1)
{
if(Key1 == 0)
Key_State_Value = 0;
if(Key2 == 0)
Key_State_Value = 1;
if(Key3 == 0)
Key_State_Value = 2;
if(Key4 == 0)
Key_State_Value = 3;
if(Key5 == 0)
Key_State_Value = 4;
printf("%d\n",Key_State_Value);
}
return 0;
}
最佳答案
  • 五星知识达人网友:青灯有味
  • 2021-01-31 02:33
keil中的库函数printf与C语言中的是不同的,它要求输出的变量必须是整型的,即 int ,
在头文件stdio.h中有定义:extern int printf (const char *, ...);
全部回答
  • 1楼网友:渊鱼
  • 2021-01-31 04:11
你看看那个函数需要什么样的参数
  • 2楼网友:酒醒三更
  • 2021-01-31 02:56
printf打印估计做了位的扩充,以32或者16位打印整形 再看看别人怎么说的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯