C语言之如何输出uint32_t和uint64_t和16进制

1、输出uint32_t

uint32_t a = 888;

printf("a is %ld",  a);

 

 

 

 

 

2、输出uint64_t

uint64_t b = 888;

printf("b is %lu", b);

printf("b is %lld", b);

 

 

 

 

 

3、输出16进制

int c =16;

printf("c is 0x%08x", c);

 

 

 

 

 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
c语言实现单片机的键盘程序 #include "SST89x5x4.H" #include #define uchar unsigned char #define uint unsigned int #define _Nop() _nop_() unsigned char code Key_Value_Table[16]={0xff,0x00,0x01,0xff,0x02,0xff,0xff,0xff, 0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; void Key_Init(void); unsigned char GetScanKey(void); unsigned char GetKey(void); void LCD_Init(void); void LCD_Init2(void); //void WriteW(uint a); void CheckBF(void); unsigned char Key_ASC2(unsigned char); void WritD(unsigned char); void Delay_ns(int i); void Delay_ms(int ms); unsigned char key; unsigned char key_asc2; unsigned char bKeyUp_Flag; uchar xdata *ptr; //函数功能描述:键盘初始化,将标志位置1; void Key_Init(void) { bKeyUp_Flag=1;//标志(全局变量)位置1 } //函数功能描述:键盘扫描函数,得到键的行列位置; unsigned char GetScanKey(void) { unsigned char key, i, temp; unsigned char xdata * ptr; key=0xff; for (i=1; i<0x10; i<<=1) //i的低4位为行数位,行依次检测 循环4次 { ptr=0x8fff; //数码管位选地址 * ptr =i; temp = * ptr; //取键盘IO口的值 temp &= 0x0f; //屏蔽高四位 if (temp!=0x00) //是否有有效键值 { key = i<<4; //取行数位的值并将其放入返回值高4位 key|=temp; //列数位的值放入返回值低4位 break; } } return key; //返回行位(高四)和列位(低四) } /*函数功能描述:取键值,长按无效; unsigned char code Key_Value_Table[16]={0xff,0x00,0x01,0xff,0x02,0xff,0xff,0xff, 0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; 说明:计算因子,定义在函数外部。此数组在计算键值的中间过程起作用。比如右下方键按下(行列值为0x88),通过查找数组得到行对应的中间值0x03,列对应的中间值0x03。 */ unsigned char GetKey(void) { unsigned char key, temp; if (!bKeyUp_Flag) //判断标志,是0执行 /*按键程序执行一次后会将bKeyUp_Flag标志位清零,执行此段程序,长按键无效返回无效值,直至按键无效返回无效按键值,置"1"标志位。按键输入恢复有效。屏蔽这部分则长按键有效*/ { key=GetScanKey(); if (key==0xff) //没有按键,置标志位 bKeyUp_Flag=1; else //保持按键 return 0xff; //因为0xff大于15,故为无效键值,实现长按键无效 } key=GetScanKey(); if (key==0xff) //没有按键 return key; else //有按键有效 temp=key; //取键值 Delay_ms(20); //延时20ms 消抖 key=GetScanKey(); //键盘扫描 if(key!=temp) //判断两次键值是否相同,排除干扰信号影响 确认有效信号 { key=0xff; return key; }
/* ************************************************ * File name: Display_DS1302.c * Function: 设置初始时间并从DS1302中读取时间并且在LCD21602中显示 * Description: * ************************************************/ #include #include #include #include #define SET_1(a,b) a|=(1<<b) #define CLE_0(a,b) a&=~(1<0; i-- ) //循环8次移位 { SCLK_0; temp = addr; if(temp&0x01;) DIO_1; //每次传输低字节 else DIO_0; addr>>= 1; //右移一位 SCLK_1; } //发送数据 for (i=8;i>0;i-- ) { SCLK_0; temp=dat; if(temp&0x01;) DIO_1; else DIO_0; dat>>=1; SCLK=1; } RST_0; } /******************************************* *函数名称: Read1302 ( ) *说 明: *功 能: 数据读取子程序 *参 数:读取的地址 *返回值 : 时间数据 *注意事项: ********************************************/ unsigned char Read1302(unsigned char addr) { unsigned char i,temp,dat1,dat2; RST_0; SCLK_0; RST_1; //发送地址 for(i=8;i>0;i-- ) //循环8次移位 { SCLK_0; temp=addr; if(temp&0x01;) DIO_1; //每次传输低字节 else DIO_0; addr>>=1; //右移一位 SCLK_1; } //读取数据 for( i=8;i>0;i--) { if(OUT) tempdate|=0x80; else tempdate&=0x70; SCLK_0; tempdate>>=1; SCLK_1; } RST_0; dat1=tempdate; dat2=dat1/16; //数据进制转换 dat1=dat1; //十六进制转十进制 dat1=dat1+dat2*10; return (dat1); } /******************************************* *函数名称: Initial() *说 明: *功 能: DS1302时间初始化 *参 数: *返回值 : 无 *注意事项: ********************************************/ void Initial(void) { Write1302 (WRITE_PROTECT,0X00); //禁止写保护 Write1302 (WRITE_SECOND,0x56); //秒位初始化 Write1302 (WRITE_MINUTE,0x34); //分钟初始化 Write1302 (WRITE_HOUR,0x12); //小时初始化 Write1302 (WRITE_PROTECT,0x80); //允许写保护 }
### 回答1: uint8_t和uint16_t都是C语言中的数据类型,分别表示无符号8位整数和无符号16位整数。其中,uint8_t的取值范围为0-255,而uint16_t的取值范围为0-65535。 在实际应用中,uint8_t通常用于表示小范围的数值,如像素亮度、音量等,而uint16_t则用于表示需要更大的取值范围的数值,如计数器数值、模数等。 由于这两个类型都是无符号整数,所以它们的运算方式都是二进制的加减乘除,且不存在负数。同时,它们的内存占用也不同,uint8_t占用1个字节(即8位),uint16_t占用2个字节(即16位)。 总之,uint8_t和uint16_t是C语言中常用的数据类型,用于表示不同范围的无符号整数,并在许多领域中得到广泛应用。 ### 回答2: uint8_t和uint16_t是C/C++语言中的数据类型,它们分别表示无符号8位和16位整数。 对于uint8_t,它的取值范围是0~255,占用1个字节的内存空间。在许多场景中,uint8_t类型的数据可以用来存储和表示像颜色、灰度值、位图等只需要占用8位的数据类型,由于它占用的内存比其他整型变量少,所以可以在一定程度上节省内存的使用。 而对于uint16_t,它的取值范围是0~65535,占用2个字节的内存空间。相比于uint8_t,uint16_t的取值范围更大了,适合存储像温度、湿度、计数器等范围较大的物理量。同时,由于其占用的内存空间较大,所以在需要处理大量uint16_t类型的数据时,需要注意内存的使用情况。 需要注意的是,由于uint8_t和uint16_t都是无符号变量,因此它们无法表示负数。如果需要使用带符号的整数类型,则需要使用int8_t和int16_t等类型。在使用这些类型时,需要注意取值范围和内存占用情况,以确保程序运行的正确性和效率。 ### 回答3: uint8_t和uint16_t是C/C++编程语言中的数据类型。它们分别表示8位无符号整数和16位无符号整数。其中,“uint”代表“无符号整数”,而数字表示数据类型中数据位的长度,即字节数。 在C/C++编程中,通常使用无符号整数类型来处理非负整数。因为无符号整数类型只包含非负的二进制数值,所以它们通常比包含符号的整数类型具有更快的执行速度和更小的内存占用。同时,由于它们没有符号,无符号整数类型也不存在负数的问题。 使用uint8_t和uint16_t可以确保在处理字节和字等不同数据类型时不会丢失信息。例如,在处理8位二进制数据时,可以使用uint8_t,而在处理16位数据时可以使用uint16_t。这两个整数类型还被用于嵌入式系统和硬件设备编程,因为它们非常有效并且占用内存很少。 需要注意的是,使用无符号整数类型也有一些限制。例如,当操作过程中的数值超过了该数据类型所能表示的最大值时,就会发生“溢出”错误。这种错误通常需要在代码中进行检查和处理,以确保程序运行的正确性和可靠性。 总之,uint8_t和uint16_t是C/C++编程中的无符号整数类型,分别表示8位和16位无符号整数,并且通常用于处理字节和字等数据类型。它们在嵌入式系统和硬件设备编程中非常常见,但在使用过程中需要注意溢出等错误问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码莎拉蒂 .

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值