(第4章)语句
原创
©著作权归作者所有:来自51CTO博客作者喜欢打篮球的普通人的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
- 2.表达式语句
- 4.if语句
- 5.while语句
- 6.for
- 7.switch语句
- 9.go to语句
- 10.条件表达式
2.表达式语句
++i;
这条语句没有赋值操作符,但是它是一条合理的表达式语句;
++操作将增加变量a的值,这就是他的副作用side effect。
4.if语句
- C语言的if语句和其它语言的if语句只有一个差别:C不具有布尔类型,而是用整型来代替——零值表示假,非零值表示真。
(1)表达式x>3的值将是0或1
if (x>3)
...
else
...
(2)整型变量也可以用于表达式。其比较的结果(0或者1)首先保存于一个变量中。
result=x>3;
if (x>3)
...
else
...
- if语句的条件表达式中的常量写在左边,以防因为疏忽造成难以查找的错误
- if 和 else 的配对准则是 : else 与距离它最近的在同一个作用域内的没有被配对的 if 进行配对。
5.while语句
while (expression)
statement
若循环体内执行了continue语句,循环体内的剩余部分便不再执行,而是立即开始下一轮循环;
用法:当循环体只有遇到某些值才会执行的情况,continue很好用
while (ch==getchar()!=EOF)
{
if (ch<'0'||ch>'9')
continue;
/*仅处理数字*/
}
若循环体内执行了break语句,循环就将永久性地退出;
eg:处理一个以负值作为结束标志的值
while (scanf("%f", &value)==1)
{
if (value<0)
break;
/*处理非负数*/
}
等价于
while (scanf("%f", &value)==1 && value>=0)
{
}
eg2:丢弃当前输入行的剩余字符:
while ((ch=getchar())!=EOF && ch!='\n')
{
;
}
6.for
for (expr1;expr2;expr3)
statement;
expr1:初始化部分;
expr2:条件部分;
expr3:调整部分;
for循环中的continue语句将跳过循环体的剩余部分,直接回到调整部分;
7.switch语句
计算一个输入中字符、单词和行的个数。
每个字符都必须计数,但是空格符和制表符同时也作为单词的终止符使用。所以,字符计数器的值和单词计数器的值都必须增加。
此外,还有换行符,这个字符是行的终止符,同时也是单词的终止符。所以出现换行符的时候,三个计数器的值都必须增加。
switch (ch)
{
case '\n':
lines+=1;
//继续
case ' ':
case '\t':
words+=1;
//继续
default:
chars+=1;
}
9.go to语句
go to 语句标签;
使用go to语句,则必须在你希望跳转的语句前面加上语句标签;
语句标签就是:标识符后面加个冒号,包含这些标签的goto语句可以出现在同一个函数中的任何位置;
while (condition1)
{
while (condition2)
{
while (contion3)
{
if (some disaster)
go to quit:
}
}
}
quit:
....;
如果想要避免使用goto语句的话,还可以使用的一种方法(情况较复杂)是:
在你所希望退出的所有循环时,设置一个状态标志,但这个状态标志在每个循环中都必须进行测试:
enum {EXIT, OK} status;
.......
status=OK;
while(status==OK && condition1)
{
while (status==OK && condition2)
{
while (condition3)
{
if (some disaster)
{
status=EXIT;
break;
}
}
}
}
还有一种方法是:把所有循环放到一个单独的函数里,当灾难降临到最内层的循环时,可以使用return
离开该函数
- eg:用loop语句实现1-100之间所有整数的累加和
#include <stdio.h>
void main(void)
{
int num=0,i;
int sum=0;
loop:
sum+=num;
num++;
if (sum<101)
goto loop;
printf(:%d,sum);
sum=0;
//与for循环结果一致
for (i=0;i<101;++i)
sum+=i;
printf(:%d,sum);
}
10.条件表达式
- 表达式 1 ? 表达式 2: 表达式 3;
条件表达式的含义为, 如果表达式 1 为真, 那么条件表达式的值取表达式 2 的值, 否则条件表达式的值取表达式 3 的值。
参考:<C和指针>,<C语言进阶重点、难点与疑点解析>