嵌入式笔试题-含解析

C1.note1.

选A 结果为0,先运算赋值语句右边的3>6,然后将结果赋值
运算符类别:
1.算术运算符:双目:+ 、- 、* 、/ 、% 单目:自加(++)、 自减(–)
2.逻辑运算符:双目:==、>、>=、<、<=、!=(不等于号) 、&&(与)、||(或) 单目:!
3.位运算符:按位:&(按位与)、 |(按位或)、^(按位异或 相同为0,不同为1)、~(按位取反)
移位操作:左移 << 、 右移 >>
4.赋值运算符:= 复合赋值运算符:+= -= /= = %= |= &= ^= >>= <<=
5.地址相关操作符 :&(取地址运算符)、

7.条件运算符:三目运算符 : 表达式?公式1:公式2
运算符顺序:

  1. [ ]、()、对象.成员名 对象指针->成员名
    2.单目运算符:++、–、&、、!(逻辑非运算符)、~(按位取反运算符)、sizeof 结合顺序:从右至左结合
    3.算术运算符 :+ 、- 、
    、/ 、%
    4.移位运算:左移 << 、 右移 >>
    5.逻辑运算符:==、>、>=、<、<=、!=
    6.位运算:&(按位与)、 |(按位或)、^(按位异或 相同为0,不同为1)
    7.逻辑与或:&& > ||
    8.赋值运算符:= 复合+= -= /= *= %= |= &= ^= >>= <<=
    简单记就是:!(单目) > 算术运算符 > 关系运算符 > && > || > 赋值运算符
    基本的优先级需要记住:
    指针最优,单目运算优于双目运算。如正负号。
    先算术运算,后移位运算(<<、>>),最后位运算(^ & |),逻辑运算(&& ||)最后计算。
    请特别注意:1 << 3 + 2 && 7等价于 (1 << (3 + 2))&&7.
    逻辑运算最后计算。

相同优先级中,按结合顺序计算。大多数运算是从左至右计算

,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
2.自加运算符 p++ 先赋值再加 ++p 先加再赋值
3.

选D,选项A 使用空指针,不能*p ,会导致错误

选C --/bin 系统程序(ls、rm等命令行) /etc(临时挂载目录) /dev(设备文件) /lib(系统库文件)
5.程序从开始编码到生成二进制可执行文件要经过4个步骤:预处理、编译、汇编、链接
6. 静态库:库中封装的二进制代码,在链接阶段被复制到调用模块中,生成程序,可执行程序运行时不再需要静态库的支持
静态库对函数的链接是在链接时期完成的,在程序运行时与函数库再无瓜葛,移植方便,比动态库浪费空间和资源。
动态库:把对一些库函数的链接载入推迟到程序运行时期,可以实现进程之间的资源共享。??
7.?

https://blog.csdn.net/sinat_20265495/article/details/72417137
8.

ttyS0是串口设备,选B
9. b e

B. char strcpy(char dest,const char*src); 将后面字符串拷贝到前面的字符串 将s2拷贝到s1
C.

D s1=s2,返回0 ,s1>s2 返回>0 , s1<s2 返回<0

E.输出vte string s2(s1,1,3)作用:拷贝s1字符串,位置1个字符后面的3个字符;v t e

??计算的是地址的长度,32位操作系统,地址长度=4个字节,int=4个字节,64位操作系统,地址长度=8个字节,int=4个字节
https://blog.csdn.net/qq_32621445/article/details/78084802
7.

case1后面没有break;将会继续执行后面case2,case3 的内容;
switch(j)
{
case 1: …; break;
default : break;
}
8.Linux系统将设备驱动分为:字符设备、块设备、网络设备

10.对所有用户的变量设置,应当放在哪个文件下?
A. /etc/bashrc
B. /etc/profile
C. ~/.bash_profile
D. /etc/skel/.bashrc
Linux 考试题(带答案)https://blog.csdn.net/sunfengye/article/details/88742252
11.??? atuo muntable

  1. https://blog.csdn.net/weixin_33769125/article/details/86415574

常量区分出来了
15. 结果为 16 ,6 j=[(5)+(5)]+6 =16
#include <stdio.h>
int main()
{
int i=3;
int j=(++i)+(++i)+(++j);
printf("%d,%d\n",j,i);
return 0;
}
解析
m = (++i)+(++i)+(++i)
i初始值为1,求m计算结果。

计算机在计算m = (a+b)+(c+d)+(e+f)先计算(a+b)+(c+d),并把结果存储(例如:存储在j中),然后再计算j+(e+f)=j;
所以计算机先计算了两个++i(前两项i为3,++i先于+号);也就是m=3+3;然后m=6+(++i)(最后的i为4),也就是m=6+4=10。
首先++i=2,再计算第二个++i=3,此时计算机里i=3,第一个i也=3,第二个i也=3,因为计算机里只有一个i,因此原式=(3+3)+4=10,记住计算机里只有一个i,算第二个时第一个i改变了。
————————————————
原文链接:https://blog.csdn.net/houzijushi/article/details/81152940
16. 常用波特率频率:1200、2400、4800、9600、19200、38400、115200

选D 19600
17. ??

  1. gpio常见的输入模式:模拟输入模式、下拉输入模式、上拉输入模式、开漏输入模式

输出 和 :49
21.cvte编程题

include <stdio.h>

void main( )
{
char s1[]=“Hello World!”;
char s2[]=“Hello World!”;
if( s1==s2 )
printf(“Equal!”);
else
printf(“Not equal!”);
}
输出“Not equal! 解析:s1 s2代表字符串数组的首地址,不相同
23.

24.void merge (char d, int size,char s1,char* s2)
{
while ( *s1 != 0 && *s2 != 0)
{
if (*s1 < *s2)
*d++ = s1++; //先计算d =*s1 ; d++;s1++;
else
*d++ = *s2++;
}
while ( *s1 != 0 ) *d++ = *s1++;
while ( *s2 != 0 ) *d++ = *s2++;
*d = 0;
}
void main( )
{
char s1[]=“acmghn”,s2[]=“bcfhi”,s3[20];
memset(s3,0,sizeof(s3));
merge(s3,sizeof(s3)-1,s1,s2);
puts(s3);
}

只移动一个指针,不是同时移动两个字符串的指针

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值