一.if
1.if循环语句格式
if(expression1)
statement1
else if(expression2)
statement2
else if(expression3)
statement3
.
.
.
else
statement(n)
else if 可以使用也可以不是用。
这里我们用一个例子进行讲解
2.if else 注意事项
If else if else之间只允许有一条语句(简单语句或复合语句)
例子
If(x>0)
Printf("Incrementing x:\n");
x++;
Else
Printf("x <= 0\n");
注意编译器吧printf()语句视为if语句的一部分,而把x++;看作一条单独的语句,它不是if语句的一部分。然后,编译器发现else并没有所属的if,这是一个错误。上面的代码应该改写为
If(x>0){
Printf("Incrementing x:\n");
x++;
}
Else
Printf("x <= 0\n");
3.else与if匹配问题
当程序中有许多if和else时候,编译器如何知道if对应哪个else呢
下面我们来看例子
在这个例子当中针对else和上面的if那个进行匹配(如果你自己打的话,你会很快发现它是和第二个if匹配的,因为系统自动帮助你缩进了)
而从结果上面我们也已经看到了,当num 不大于 6 时,系统啥也不会打印。大于6小于12打印one,大于12打印two。
从这里我们也可以总结得出来,else是与离它最近的if匹配的。
因为If else if else之间只允许有一条语句(简单语句或复合语句)。所以简单语句可以不加花括号。也可以加上这样结构会更加明显。
二.switch
1.格式:
switch(expression){
case label1: statement1 //可以使用break跳出switch
case label2: statement2
.
.
.
default: statementn
程序根据expression的值跳转至相应的case标签处。然后,执行剩下的所有语句,除非执行到break语句进行重定向。expression和case标签都必须是整数值(包括char类型),标签必须是常量或完全由常量组成的表达式。如果没有case标签与expression的值匹配,控制权则转至标有default的语句(如果有的话);否则,将转至执行紧跟switch语句后面的语句
可以有多个标签语句,default语句可选
假设如果ch是字母i,switch语句会定位到标签为case'i':位置。由于该标签没有关联break语句,所欲程序流直接执行下一条语句,即i_ct++;。如果ch是字母I,程序流回直接定位到case'I':本质上,两个标签都指向相同的语句
而且,其实case'U'的break语句并不需要。因为即使删除这条break语句,程序流回接着执行switch中的下一条语句,即default: break;所以,可以把case'U'的break语句去掉以缩短代码。
但是从另一个方面看,保留这条break语句可以防止以后在添加新的case是遗漏break语句
三.goto
1.格式
goto label;
.
.
.
label:statement
goto语句使程序控制跳转至相应标签语句。冒号用于分隔标签和标签语句。标签名遵循变量命名规则。标签语句可以出现在goto的前面或后面
一般很少使用goto,一般的用法则是从一组嵌套循环种跳出
while(funct >0)
{
for(i=1;i<=100;i++)
{
for(j=1;j<=50;j++)
{
其他语句
If(问题)
{
Goto help;
}
其他语句
}
其他语句
}
其他语句
}
其他语句
Help:语句
在goto的使用上,并不推荐大家使用,因为goto的使用起来容易造成混淆,比较这个语句在程序到处跑,在大量代码的程序中很容易造成理解混乱。
比如这样, 程序进入了死循环,不断打印hello
加上一个条件就好了
好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈