if语句
语法结构:
一:if(表达式)//表达式为真时执行语句
语句;
二:if(表达式)
语句1;
elseyi
语句2;
//多分支
三:if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
注意:C语言中不含有布尔类型,所以用非0表示真,0表示假
下面我们来看一段代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> //判断结构,C语言中不含有布尔类型,所以用非0表示真,0表示假 int main(){ int coding = 0;//coding变量初始化为0 scanf("%d", &coding);//可以自定义输入变量 if (coding == 20000)//判断是否为真,真的话执行括号里面的语句,假的话跳出 { printf("%s\n", "走上人生巅峰\n"); } else if (coding == 10)//判断是否为真,真的话执行括号里面的语句,假的话跳出 { printf("%s\n", "回家卖红薯\n"); } else//如果上述都有错误,执行此括号里面的语句 { printf("%s\n", "没救了\n"); } return 0; }
此段代码我们用了多分支语句,当输入的coding等于20000时,则打印输出“走上人生巅峰”,当输入的coding等于10时,则输出“回家卖红薯”,如果输入的coding都不等于上述数值时,则输出“没救了”。
输出结果为:
下面来看两段代码,这两段代码的对比主要是为了凸显代码的风格以及{}的使用
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> //适当的使用{}可以使代码的逻辑更加清楚 //代码风格很重要 int main(){ int a = 1; int b = 2; if (a == 1) if (b == 2) printf("hehe\n"); else printf("haha\n"); return 0; }
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> //适当的使用{}可以使代码的逻辑更加清楚 //代码风格很重要 int main(){ int a = 1; int b = 2; if (a == 1) { if (b == 2) { printf("hehe\n"); } } else { printf("haha\n"); } return 0; }
对比上述的两段代码可以看出两者的代码风格完全不同,一个注重对于{}的使用,一个没有,显然下面的代码风格更让人赏心悦目,适当的使用{}可以让代码的逻辑更加清楚。
如果上述代码不去使用{}会发生什么呢?下面我们来看一段代码:并思考此段代码的输出结果是多少?
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(){ int a = 1; int b = 2; if (a==1) if (b == 2) printf("hehe\n"); else printf("haha\n"); return 0; }
分析:
假如此时a等于0,但是执行if(a==1)时会判断为假,那么就执行不到if(b==2)语句,也就不会再有输出语句,则会直接执行return 0语句,程序结束。
现在根据图中的代码,此时a=1,那么当执行到if(a==1)时,判断为真,则此时执行if(b==2),又因为此时b=2,if判断为真,则执行printf("hehe\n");输出hehe.
假如此时b不等于2,则此时会输出haha,原因是else会找最近的if语句进行匹配,也就是if(b==2)语句,此时if条件语句判断为假,则会调换到else语句进行输出。
输出结果为:
下面来看最后一段代码:思考这段代码的输出结果:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main(){ int a = 10; if (5 < 10 < 30)//判断的顺序为首先5小于10,为真所以为1,下来1小于30,为真,所以此时执行printf("hello\n"); { printf("hello\n"); } else { printf("hello1\n"); } return 0; }
分析:在if判断条件中,判断的顺序为首先5小于10,为真所以为1,下来1小于30,为真,所以此时执行printf("hello\n");
输出结果为: