永发信息网

c语言里面关于宏定义的一个小问题

答案:2  悬赏:30  手机版
解决时间 2021-04-09 03:09
  • 提问者网友:戎马万世
  • 2021-04-08 16:16
执行:#define SIM_SOPT2_CLKOUTSEL(x) (((uint32_t)(((uint32_t)(x))<这个 SIM_SOPT2 |= SIM_SOPT2_CLKOUTSEL(3); 给SIM_SOPT2赋的值时多少啊?
最佳答案
  • 五星知识达人网友:低音帝王
  • 2021-04-08 16:27
SIM_SOPT2_CLKOUTSEL_SHIFT 和 SIM_SOPT2_CLKOUTSEL_MASK 这两个宏定义是什么值呢,楼主没有给出来。
总的来说是将x转为无符号32位后,先左移SIM_SOPT2_CLKOUTSEL_SHIFT位,再与SIM_SOPT2_CLKOUTSEL_MASK进行“与”运算,得出的值放在等号右边,最后进行“|=”操作。
全部回答
  • 1楼网友:怙棘
  • 2021-04-08 17:39

第一个: k = n + 1 + 1 * n + 1 / 2    =    2 + 1+ 1 * 2 + 1/2   =  4

第二个: k = m / 2 = 9 / 2 = 3

记住一点: 宏定义就是一个字符串的替换!!!没有括号的时候别自己想当然的加括号!

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯