一,分支语句
1,if语句的形式
1.if(表达式)
2. 语句;
在c语言中表达式成立(为真)就执行语句,若表达式不成立(为假)就执行不语句。
c语言中,0为假,非0为真。也就是说表达式为0就不执行语句,表达式为非0就执行语句。
例子:
判断1个数是不是偶数
c
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 2 == 0)
{
printf("偶数");
}
return 0;
}
1.2,else
一个数不是偶数就是奇数,那么怎么来判断呢?这里就需要if...else...语句了
if...else语法格式
1. if (表达式)
2. 语句1;
3. else
4. 语句2;
例子:
C
int main()
{
int num = 0;
scanf("%d", &num);
if (num % 2 == 0)
{
printf("偶数");
}
else
{
printf("奇数");
}
return 0;
}
我们知道分支语句中有多个语句
但是在c语言中if...else...是默认控制一条语句的
例子:
C
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年了\n");
printf("可以考驾照了");
return 0;
}
这个代码我们的本意时等于或者大于18才打印成年了和可以考驾照了但是结果是不管等于,大于还是小于都打印了可以考驾照了这和我们写这个代码的初衷相背。
那么如何解决这种问题呢?
我们可以给if加上个{}
C
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("成年了\n");
printf("可以考驾照了");
}
return 0;
}
我们再看这个代码就没有违背我们写这个代码时的初衷,等于和大于才会打印成年了和可以考驾照了而没有满足这个条件就不会打印,所以我们在写if语句时应该加上{}这也是一种好的习惯也不要觉得加上{}麻烦,同样在写else时我们也应该和if加上{}。
1.4 悬空else
悬空else是if...else...中比较常见的问题我们看这个代码
例子:
C
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hello c");
else
printf("hello c++");
return 0;
}
这个代码我们是想打印hello c 和hello c++我们可以看这个代码应该是打印hello c++的我们运行下看看
结果什么也没有打印那为什么呢?
这是因为if...else...语句的语法规则是就近原则,而不是对齐所以下面那个else的匹配对象是第二个if而不是第一个if,那么怎么避免这种问题呢?我们还是给写if...else...语句是加上{}我们就可以解决这个悬空else的问题了。
我们再看下面的代码:
C
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hello c");
}
else
printf("hello c++");
return 0;
}
我们给第一个if加上{}后就是我们想要的结果了,所以在写if...else...语句时应该要有个加上{}的习惯
所以在使用if时我们应该要有给if...else...的语句加上{}来避免悬空else的问题和结果与自己的想法不一致的问题。