这是周游C语言的第五篇教程,你将在这篇文章里认识条件语句。
条件条件就是判断语句是否成立,在C语言中,0表示不成立,就是逻辑中的假,非0则表示成立,就是逻辑中的真。对于一个条件判断语句,如果判断成立,那么这个表达式的值就是1,即为真,否则这个表达式的值就是0,即为假。比如a=2,b=3,那么表达式a>b的值就是0,因为他并不成立,而a 条件语句
C语言中可以使用if和switch两个条件语句来判断
ifif语句的结构如下
if(表达式1) { 执行代码1; } else if(表达式2) { 执行代码2; } else if(表达式3) { 执行代码3; } else if(...) { ...; } else { 执行代码n; }
if的执行逻辑是,先判断if中的表达式是否成立,如果成立就执行代码1,然后跳过其他代码。如果if中的表达式不成立,则跳到下一个else if()中去判断表达式是否成立,如果成立就执行对应的代码块,如果一直不成立就一直会执行else中的代码。
既if语句中每个代码块都是平行的,满足哪个条件就执行哪个,一旦有一个条件满足,其他表达式就不再判断了。如果表达式1成立,即使表达式2再次成立,代码块2也不会被执行。当所有的表达式都不满足,那么就会执行else中的语句。
其中else if和else并不是必须的
if(表达式1) { 执行代码1; }
if(表达式1) { 执行代码1; } else { 执行代码2; }
if(表达式1) { 执行代码1; } else if(表达式2) { 执行代码2; }
以上几种写法都是允许的。
#includeswitchint main() { int a = 1; int b = 2; if (a == b) { printf("a等于b"); } else if (a > b) { printf("a大于b"); } else { printf("a小于b"); } }
switch 的本质跳转。他的结构如下
switch(整型变量) { case 常量1: 代码块1; break; case 常量2: 代码块2; break; default: 代码块n break; }
程序会自动从case中查找和整型变量相等的值,然后跳转到这条语句处顺序执行代码,break的意思是跳出当前程序段,也就是跳出switch。如果列出的所有case中都没有和整型匹配的值,那么就会跳转到default中的。
注意,switch中必须是整型;case后面必须跟着常量,既固定值;default可以省略,由于swich本质是跳转,所以他会一直执行代码,直到碰到break;
switch(整型变量) { case 常量1: 代码块1; case 常量2: 代码块2; default: 代码块n break; }
上述代码,如果整型变量等于常量1,那么他会跳转到代码块1,然后一直顺序向下执行,由于没有碰到break;他会将代码块2和代码块n也执行。
#includeif和switch的区别int main() { int a = 1; switch (a) { case 1: printf("1"); break; case 2: printf("2"); break; case 3: printf("3"); break; case 4: printf("4"); break; default: printf("其他数字"); break; } }
swich只能用来判断某个变量的值为多少,其必须为整型,但由于其本质是跳转,所以每条语句都是相等的,不会出现先判断是不是等于常量1,然后再去判断是不是等于常量2的情况,即使case足够多,也等于只会进行一次判断。
if可以适用于任何表达式,他会将if中的所有表达式都先运算一遍,判断表示式的值是否为真,如果不符合再去判断下一个if,也就是说,如果第5个if中的表达式才满足条件,那么前4个if中的表达式同样会被计算。
#includeint main() { int a = 4; if (a-- == 0) { printf("a = 0"); } else if(a-- == 0) { printf("a = 1"); } else if (a-- == 0) { printf("a = 2"); } else if (a-- == 0) { printf("a = 3"); } else if (a-- == 0) { printf("a = 4"); } }
这里我们用到之前学过自减,a–会先返回自己当前的值然后再自减。最后运行可以看到输出a = 4
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)