嵌入式笔试刷题(第13天)

1. 表达式 (^A)||(^B) 等效表达式

逻辑表达式中,^ 是按位异或。假设 ^A 表示“非A”是错误的,正确语法是逻辑非 !A,但此题应理解为异或。

表达式 (^A)||(^B) 不太符合常规写法,合理理解为:

若表达式是 !A || !B,等价于 !(A && B)(德摩根定律)

✅ 所以答案应是:A. ^(A && B)

2. 宏展开与副作用

#define MAX(a,b) ((a)>(b)? (a) : (b))

int x=5, y=8, z=10;
z = MAX(x++, y++);

宏展开:

z = ((x++) > (y++) ? (x++) : (y++));

  • 如果 x=5, y=8,则 x++ = 5, y++ = 8 → 5 > 8 → false → 执行 y++,y=9, z=8
  • 实际上两次 y++ 被执行,y=10

最终:x=6, y=10, z=10

✅ 正确答案:D. x=6, y=10, z=10

3. 数组越界访问

int a[5], i;
for(i=1; i<=5; i++) {
    a[i] = 0;
}

数组下标范围应是 0~4,这里 a[5] 越界但循环执行了 5次,即 i=1i=5

✅ 正确答案:A. 6(包括数组下标非法的1次)

4. 带位字段的结构体大小

struct MStar {
    char STB:1;
    cha

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式笔试专栏 文章被收录于专栏

本专栏系统整理了嵌入式方向笔试中常见的知识点和高频考题,涵盖基础理论、常用算法、C语言陷阱、操作系统原理、驱动开发、常见外设通信协议(如 I2C/SPI/UART)、RTOS、Linux 内核、以及实用电路知识等内容。

全部评论
点赞 回复 分享
发布于 04-25 21:41 山西
😄😄😄😄
点赞 回复 分享
发布于 04-25 16:24 上海
接好运
点赞 回复 分享
发布于 04-15 15:10 黑龙江

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务