迪文科技论坛

 找回密码
 立即注册
搜索
查看: 559|回复: 4

【提问】枚举体输出有错

[复制链接]

7

主题

10

回帖

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2024-5-17 10:21:26 | 显示全部楼层 |阅读模式
代码如下


#include "sys.h"
#include "usart.h"

enum {
        QR_MODE_NUL = -1,   ///< Terminator (NUL character). Internal use only
        QR_MODE_NUM = 0,    ///< Numeric mode
        QR_MODE_AN = 1,         ///< Alphabet-numeric mode
        QR_MODE_8 = 2,          ///< 8-bit data mode
        QR_MODE_KANJI,      ///< Kanji (shift-jis) mode
        QR_MODE_STRUCTURE,  ///< Internal use only
        QR_MODE_ECI,        ///< ECI mode
        QR_MODE_FNC1FIRST,  ///< FNC1, first position
        QR_MODE_FNC1SECOND,  ///< FNC1, second position
};

void main(void)
{   
        
    sys_init();//系统初始化
   
    printf("QR_MODE_NUM:%u\r\n",FALSE);
    printf("QR_MODE_AN:%u\r\n",QR_MODE_AN);
    printf("QR_MODE_8:%u\r\n",QR_MODE_8);

        while(1)
        {   

        }
}

输出结果:

QR_MODE_NUM:0
QR_MODE_AN:256
QR_MODE_8:512


这是什么情况???


















回复

使用道具 举报

0

主题

87

回帖

617

积分

高级会员

Rank: 4

积分
617
发表于 2024-5-17 10:58:37 | 显示全部楼层
应该大于0的数用%d显示整数,或者枚举把数限定指定类型
回复

使用道具 举报

7

主题

10

回帖

268

积分

中级会员

Rank: 3Rank: 3

积分
268
 楼主| 发表于 2024-5-17 11:51:02 | 显示全部楼层
tianlan 发表于 2024-5-17 10:58
应该大于0的数用%d显示整数,或者枚举把数限定指定类型

%d也一样,指定类型怎么做
回复

使用道具 举报

0

主题

87

回帖

617

积分

高级会员

Rank: 4

积分
617
发表于 2024-5-17 13:12:22 | 显示全部楼层
zhangzhenqing 发表于 2024-5-17 11:51
%d也一样,指定类型怎么做

(int)6  (char)6这种转指定类型的
回复

使用道具 举报

31

主题

238

回帖

2785

积分

金牌会员

Rank: 6Rank: 6

积分
2785
发表于 2024-5-17 15:06:51 | 显示全部楼层
枚举一般来说不是在枚举体内赋值,需要赋值应该在其他地方用#define来定义,既然定义了就应该所有的成员都需要定义。

枚举的本质其实就等同于常量数组
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-9-21 06:27 , Processed in 0.032298 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表