Arduino初学者小补C语言,分支与循环

越来越难了,还是得先补一下从语言才行,有点语言基础学arduino会轻松一点,小白避坑指南啊

一、If else 语句

接着上次的博文,对if else语句一知半解的讲述,来谢罪了
1.1基本用法
首先,简单介绍一下 if else 语句的书写格式:

if (条件语句)

{

满足条件后的执行内容;

}(//这里写入执行语句,在这里加上个大括号也算是一个好习惯)

else(条件语句)

{

满足条件语句后的执行内容;

}
 


1.2多分支与嵌套
 if else 语句也支持多分支食用,拿老师喜欢的age来举例:

int age =0;

if(age<=18)

{

printf("少年\n");

}

else if (age<=25)

{

printf("青年\n");   

}

else

{

printf("壮年\n");   

}

上面是普通写法

这样的话就是一个三分支的句例

嵌套如下:

int age =0;

if(age<=18)

{

if (age<=10 )

{

printf ("幼年\n")

};                     <--注意:此处就进行了 if 语句的嵌套使用。

else

{

printf ("少年\n");

}

}

else if (age<=25)

{

printf ("青年\n");   

}

else

{

printf ("壮年\n");   

}



1.3 使用过程中几个需特别注意的点
比如,在条件语句中需描述 a 的值要大于等于1且小于等于2时

大部分小萌新们会将数学语言直接照搬到条件语句中,

错误示例

if(1=<a<=2) 
1
长期以来数学语言的熏陶下,这种根深蒂固的惯性思维也将使我们困扰许久。于是在这里便和大家分享此题正解:

正确示例

if (a>=1&&a<=2)ps:此处的 && 是逻辑”与“符号,在这块就表示并且、和
1
还有一些需要注意的点!!

1.3.1 关于经常把赋值符号 “=" 与 等于 ”== “ 弄混的小秘招
相信很多小伙伴也和我一眼在这里容易弄混,例如一个程序;问你是否喜欢蓝色(1 Yes / 2 No)

输入 1 就在屏幕上打印 ”喜欢“

而输入 2 就在屏幕上打印”不喜欢“

接下来我们来实现这个函数

常见错误示范:

#include<stdio.h>

int main()

{ int a=0;

scanf("%d",&a);

if(a=1)

{

printf(" 是的\n");

}

else

printf("不喜欢\n");

return 0;

你会发现不管是输入 1 还是 2 输出的结果都为 ”喜欢“。

编译器也不会给你报任何错误,那么其实这就是走入了 赋值符号 “=" 与 等于 ”== “ 弄混 的这个误区,对于这种一个常量和变量进行对比的条件语句

我们可以在写的时候将常量与变量的位置互换一下

if(1==a) 
1
这样一来即使你不小心将两个符号混乱使用了,也能够即使发现错误(因为如果此处写成了赋值的符号,变量在右边,常量在左边,变量是不能给常量赋值的,产生了语法错误,此时编译器会报错。这样一来就将逻辑错误转换成了语法错误。

并且前后对调位置后对程序运行的结果是不会有影响的

1.3.2 "悬空 else "易错的问题

#include<stdio.h>
int main()
{
  int a = 0;
  int b = 2;

  if(1==a)//用到上面的方法,避免出错
  if(2==b)
{
      printf("yes\n");
}
  else
{
      printf("no\n");
}
return 0;
}


错误就在这里,这样的话什么都不输出。
是因为 else 会与最近的一条 if 语句相匹配,而不是与位置上对齐的 if 语句相匹配。
经过前面对 if else语句的学习,我们简单分析一下这串代码,首先走到第一个 if 的条件语句判断 a是否等于1,

如果等于程序才走后面的一套 if else 语句(注意后面的if else语句虽然中间有两个分号但本质上两个合起来才算组成一条语句,且因为if else是选择执行一个的,所以必然是一条)。

而很明显不满足第一个 if 的判断语句,所以后面的无论是 yes/no,就算符合条件了也根本不会输出,因为程序都不会走过去。这就造成了所谓的   "悬空else"  的情况。

要使所有控件路径都有返回值
简单来说就是在使用分支语句时要使所有分支都有返回值,否则编译器将会发出警告.

如果你只写了 if 的返回值情况,没在其他情况下设置返回值,编译器就会认为在 if 语句不满足时该函数没有返回值。,因为编译器要求在 if 不符合的情况下也得有相应返回值。

在Arduino IDE中编程也是这样的道理,希望到家都少走弯路,不断进步。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请在此处输入你的昵称

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值