文章目录
我们知道C语言是结构化的程序设计语言,结构指的是顺序结构、选择结构、循环结构,C语言可以实现这三种结构。
我们写的代码是从上往下写的,而编译器也是从上往下一个一个读取代码,但这个有一个特别要注意的地方是,C语言是从main函数开始往下读取代码的,这里我们补充一个知识点。
我们说main函数是程序的入口,一个项目中可以有多个.c文件,但只允许有一个main函数,main函数有且只有一个,main函数也叫主函数。
回归正题,我们可以使用if和switch来实现分支结构。
if和else
if语句
if语句的语法形式:
if(表达式)
语句;
if语句执不执行,取决于表达式为真或为假,表达式为假,if语句不执行,表达式为真,if语句执行。
而在C语言中非0为真,0为假,简单点说,就是如果表达式为0,语句就不执行,表达式为1,语句执行。
例子:
#include <stdio.h>
int main()
{
if(1)
{
printf("hehe");
}
return 0;
}
最后输出的结果是:hehe。
表达式为非0(1),则语句执行。
当表达式为0时:
#include <stdio.h>
int main()
{
if(0)
{
printf("hehe");
}
return 0;
}
什么都不输出,具体效果,可以自行复制这串代码,在编译器里验证。
或者我们换一种写法:
#include <stdio.h>
int main()
{
int a = 0;
if(a)
{
printf("hehe");
}
return 0;
}
同样是不会打印。
else
if语句还可以配合else语句来一起使用。
if和else合起来才是一条完整的语句,才可以实现真正的分支作用。
分支语句就像一条岔路口,你选择走了A,就走不了B,if和else是一样的,当一起出现了if和else,要么走if,要么走else,编译器运行代码绝对不会走了if又走else。
例子:
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
if(a > b)
{
printf("hehe");
}
else
{
printf("haha");
}
return 0;
}
这里的if语句中的表达式"a>b"可以理解为实际情况a小于b时,if语句中是a>b,那这个表达式为假,为假则表达式不成立,那么自然而然的就执行else语句了,当if不成立时,else语句则执行。
我们再举一个例子,当a是奇数时则执行if,当时a是偶数时就执行else,这里就要使用到if···else语句。
if···else表达式如下:
if(表达式)
语句1;
else
语句2;
例子: 奇数则执行if,偶数则执行else。
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a); //输入3
if (a % 3 == 0)
{
printf("是奇数\n");
}
else
{
printf("是偶数\n");
}
return 0;
}
最后输出的是奇数。
悬空else
悬空else问题,else总是和最接近的if相匹配
我们看这段代码:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("haha\n");
else
printf("hehe\n");
return 0;
}
这段代码最终会输出什么?什么都不输出。
我们知道一个原则,else总是和最接近的if相匹配,当a=0,if表达式是a=1时,if表达式则不成立,if不成立,那么就走else,但这段代码中有两个if,而else和最接近的if相匹配,else和第二个if相匹配,而if表达式又不成立,但else是和第二个if相匹配的,所以也走不了else,最终的结果就是什么都不输出。

本文围绕C语言的分支和循环语句展开。介绍了用if和switch实现分支结构,包括if和else的使用、悬空else问题、switch中break和default的作用等。还阐述了for、while、do···while三种循环结构,以及循环中break和continue的差异,最后提及goto语句的使用及注意事项。

2432

被折叠的 条评论
为什么被折叠?



