Men的博客

欢迎光临!

0%

C 语言常用运算符和表达式

一 表达式和语句,关系运算符和逻辑运算符

1)表达式是由运算符和操作符组合构成的,简单表达式能够构成复杂表达式 下面列举的都是表达式
常量表达式:5 该表达式值为5
加法表达式:5+4 该表达式值为9
赋值表达式:n=4+5 该表达式值为9
关系表达式:9>5 该表达式值为1
逻辑表达式:5>4&&4<3 该表达式值为0
注意:每一个表达式肯定有一个确定的值
2)语句:表达式后面加一个分号就构成了语句,不是所有语句都合法 一个语句是一条完整的计算机指令
注意: 语句有单条语句和复合语句之分,复合语句是多条语句用花括号括起来,功能相当于单条语句。
3)关系运算符:
关系表达式为真,值为1;关系表达式为假,值为0. 即表达式的值非0即1,非1即0。
4)逻辑运算符
逻辑运算符的值可以为0或者非0
(1) &&
有一个表达式为假,整个复合表达式的为假,即值为0。
所有表达式都为真,整个复合表达式的为真,即值为非0.
(2) ||
有一个表达式为真,整个复合表达式就为真,即值为非0
所有表达式都为假,整个复合表达式才为假,即值为0
(3) ! 逻辑非
非假即为真
非真即为假

二 分支结构

程序在执行的过程中所有语句都遵循一个原则:
源程序自上而下自动执行每一条语句,这是计算机设计的时候就决定的。顺序结构是程序执行的基础,分支结构与循环结构是建立在顺序执行结构之上的。
1)if(表达式)
{
statements;
}
表达式为真,则执行statements,执行完statements,即结束判断语句,
继续执行下面的语句。
若表达式为假,不执行statements而继续执行if判断语句下面的语句
2)if(表达式)
{
statements1;
}
else
{
statements2;
}
表达式为真则执行statements1,否则执行statements2,而且只能执行
两者其中之一,绝不可能两条语句都执行。
statements1或者statements2执行完其中之一后还要继续执行if判断语
句的下一条语句。
4)switch(表达式) 表达式是一个可变的
{
case 常量表达式1:
statements1;
break;
case 常量表达式2:
statements2;
break;
:
:
:
default:
statements_default;
}
扫描与表达式匹配的项,一旦匹配执行后面对应语句,执行完直接退出
switch结构,如果没有找到与表达式匹配的项,就执行default那个标
签对应的语句,之后退出switch结构。
注意:
(1)表达式必须是可变的
(2)case后面的标签必须是常量
(3)每一个常量标签后面都有一个冒号(:)
(4)每一个标签后面语句都要有一句break;
不用break;有时会很有用,看情况要不要break;
一般情况下执行完要退出switch的只能用break来退出。如果没有break,那么switch会先查找与表达式匹配的标签之后不再检 查标签是否与表达式匹配而顺次执行下去,直到执行完整个switch剩下的部分。有时我们也可以利用switch这个特性来实现我们的代码功能。
(5)default语句就相当于if…else if…else结构里的最后一个else,对选项的逻辑完整性有一定的作用,一般写上为好。

三 循环控制结构:已明确知道执行循环次数和不确定具体执行循环次数

1)for(表达式1;表达式2;表达式3)
{
statements;//循环体
}
for循环的有点:不容易漏掉一些必须的条件。
表达式1:仅仅只在进入循环的时候执行一次,给计数器赋一个初值
表达式2:每一次进入循环体执行代码的之前,都要判断该表达式是否为真
若为真则进循环,否则结束循环
表达式3: 每成功执行一次循环体,循环计数器都要递变以趋近于循环结束
注意:步长的增加和循环结束判断条件都可以很灵活的使用。

2)while(表达式)

{
statements;//循环体
}
如果表达式为真,则进入循环执行循环体,否则结束循环
注意:
(1)循环在开始前,要给循环作个铺垫。例如,确定循环的次数,我还需要知道循环计数器是从那个数值开始的
(2)循环体内必须要包含让while循环趋近于结束循环的递变

3)do

{
statements;//循环体
}while(表达式);
do…while()语句与while()循环功能差不多,的不同是:do…while()是一个出口条件判断循环,这就导致do…while结构在第一次执行循环体的时候是没有经过任何条件判断的,即第一次循环肯定执行一次。而while()循环是一个入口条件判断循环,即在每一次执行循环体之前都要做一次判断。
注意:do…while()循环后有分号,这点跟while()和for循环都是不一样的。

4)break和continue

(1)break;可以跳出(结束)switch()或者循环控制结构,下面看一个break退出循环

经验之谈:要以计算机的思维模式去思考怎么写出符合需求的代码