嵌入式Linux C(四)——基本语句注意点(附题目)

简介: 嵌入式Linux C(四)——基本语句注意点(附题目)

一、if语句陷阱


if语句注意事项


非零为真

if条件后面别加;

判断相等时,将常量写在左边

规范:if匹配else < 可读性差>

if条件中的运算符优先级(加上括号)

零值比较

整型 if(0 == num) if(0 != num)

布尔型 if(flag) if(!flag)

指针 if(NULL == *ptr) if(NULL !=*ptr)

浮点型 if(x >=-EPSINON)&&(x <= EPSINON)

EPSINON是允许的误差(即精度)


二、循环语句


死循环 while(1)/for(;😉

whlie条件没有==;==

循环体里不要直接修改循环变量==!!!==

程序优化(嵌套),把长循环放在内层;逻辑判断放在外层

编码规范:即使只有一条语句也加上{}


switch语句


条件:整数或者字符 表达式

格式:不管case下语句有多少条,都要加{}

default:每个switch语句必须加入default

流程:只要匹配到case,如果case里没有break,会一直往下执行


break VS continue


continue(只在循环体):结束当前这次循环,进行下次循环

break:结束当前全部循环


goto语法


loop:

goto

goto使用注意事项


尽可能的少用goto语句:goto语句会破坏代码结构;导致代码可读性差

标签和goto语句之间切记不要出现变量的定义

goto的使用场景:异常处理

快速处理掉异常



do while(0)的作用 避免else混用,避免goto


程序训练


题目1~n,数字中,有多少个’9’


#include <stdio.h>
int main()
{
  int num,sum = 0,temp_i,i;
  scanf("%d",&num);
  for(i = 0; i <= num; i++)
  {
  temp_i = i;
  while(0 != temp_i)
  {
    if(9 == (temp_i % 10))
    {
    sum++;
    }
    temp_i = temp_i / 10;
  }
  }
  printf("sum = %d",sum);
  return 0;
}


题目2

题目:有n个人围成一圈,顺序排号,从第一一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位.(提示:用数组完成)

题目3

输入5个数(含负数、小数)将他们按小到大的顺序排列起来(提示:需要排数的数字通过参数传递进来)


相关文章
|
2月前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
79 1
|
3月前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
97 3
|
2月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
82 1
|
3月前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
27天前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
**嵌入式Linux学习误区摘要** 1. **过度聚焦桌面Linux** - 许多学习者误将大量时间用于精通桌面Linux系统(如RedHat、Fedora、Ubuntu),认为这是嵌入式Linux开发的基石。 - 实际上,桌面Linux仅作为开发工具和环境,目标不应是成为Linux服务器专家,而应专注于嵌入式开发工具和流程。 2. **盲目阅读Linux内核源码** - 初学者在不了解Linux基本知识时试图直接研读内核源码,这往往导致困惑和挫败感。 - 在具备一定嵌入式Linux开发经验后再有针对性地阅读源码,才能有效提升技能。
22 4
|
2月前
|
物联网 Linux 芯片
学习嵌入式是选择单片机还是Linux?
单片机通常指的是一种集成了处理器、存储器和各种外设接口的微控制器芯片,常见的有STC、51系列、AVR、ARM Cortex-M等。单片机具有低成本、低功耗、实时性强等特点,适用于对资源要求较低、功耗要求较低、实时性要求较高的嵌入式系统。学习单片机开发可以让您深入了解嵌入式系统的底层原理和硬件编程,对于对嵌入式系统底层开发感兴趣的人来说,是一个很好的选择。
58 4
|
2月前
|
消息中间件 安全 Java
【嵌入式软件工程师面经】Linux多进程与多线程
【嵌入式软件工程师面经】Linux多进程与多线程
35 1
|
2月前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
34 1
|
3月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
30 0
|
3月前
|
Linux 编译器 测试技术
嵌入式 Linux 下的 LVGL 移植
嵌入式 Linux 下的 LVGL 移植
151 0