宏定义三目运算符使用问题(没找到原因,求解答)

背景:结合以下用例输入,使用宏定义指定CANID时,发现嵌套宏定义是否带括号、三目运算符取最外层左右值的输出情况不同。其中CANID为11bit,怀疑是嵌套三目运算符带入函数导致CANID输入溢出,但是自己手动带入计算未果,网上搜索宏定义嵌套也眼花缭乱,目前未查明原因。后续有发现会更新。

详细程序内容如下:

#define PPCU  4

宏定义内容1:#define PPCUID (PPCU>3?0x134:(PPCU>2?0x133:(PPCU>1?0x132:0x131)))

宏定义内容2:#define PPCUID PPCU>3?0x134:(PPCU>2?0x133:(PPCU>1?0x132:0x131))

宏定义内容3:#define PPCUID PPCU>4?0x135:(PPCU>3?0x134:(PPCU>2?0x133:(PPCU>1?0x132:0x131)))

对于以上宏定义的使用:

fun1(PPCUID );//函数参数PPCUID用于输入ID

fun2(PPCUID +0x170);//函数参数PPCUID+0x170用于输入ID

使用宏定义内容1(使用无异常):

输出:fun1的PPCUID为0x134,fun2的PPCUID+0x170   为 0x2A1

输出:fun2的PPCUID为0x134,fun2的PPCUID+0x170    为 0x2A1

使用宏定义内容2(输出异常):

输出:fun1的PPCUID为0x134,fun2的PPCUID+0x170   为 0x2A1

输出:fun2的PPCUID为0x134,fun2的PPCUID+0x170    异常,未输出

使用宏定义内容3(使用无异常):

输出:fun1的PPCUID为0x134,fun2的PPCUID+0x170   为 0x2A1

输出:fun2的PPCUID为0x134,fun2的PPCUID+0x170    为 0x2A1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值