搜档网
当前位置:搜档网 › c语言的自增和自减 (1)

c语言的自增和自减 (1)

1、自增和自减运算符是C语言中特有的一种运算符,他们的作用分别是对运算对象做加1和减1运算,其功能如下:

++ 自增运算符,如:a++,++a;

-- 自减运算符,如:a--,--a。

从表面上看,a++和++a的作用都是使变量a的值加1,但由于运算符++所处的位置不同,使变量a执行加1的运算过程也不同,

++a的运算过程是:先使变量a执行a+1的操作,再使用a的值,

a++的运算过程是:先使用变量a的值,再执行a+1的操作。

自增和自减运算符只能用于变量,不能用于常数或者表达式。

1、逗号运算符

在C语言中,逗号运算符“,”可以将两个或多个表达式连接起来,称为逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,表达式3....表达式n

逗号表达式的运算过程是:先运算表达式1,再计算表达式2,....以此计算到表达式n。

1、条件运算符是C语言中唯一的一个三目运算符,他要求有3个运算对象,用它可以将3个表达式连接构成一个表达式。条件表达式的一般形式如下:

表达式1?表达式2:表达式3

其功能是首先计算表达式1,当其值为真(非0值)时,表达式2的值作为挣个条件表达式的值,否则将表达式3的值作为整个条件表达式的值。

C语言中共有6种位运算符,按优先级从高到低依次是:

按位取反(运算符~)--左移(运算符<<)--右移(运算符>>)--按位与(运算符&)--按位异或(运算符^)--按位或(运算符|)

1、c语言中的移位运算符有两种,左移运算符、右移运算符。

1)左移运算符(<<),其作用是讲一个数的各个二进制位全部左移若干位。例如a=a<<2,表示将a的二进制数左移2位,若a=15,即二进制数00001111,左移2位得到的结果是00111100,再如a=240,即二进制数11110000,左移2位后得到的结果是11000000.其中高位左移后溢出,被舍弃了,低位以0进补。

2)右移运算符(>>),其作用跟左移运算符相反,表示将一个数据的各个二进制位右移若干位,其中移到右端的低位被舍弃,高位以0进补。

2、左移和右移运算符有时候可以代替一些乘除运算,这样可以节省cpu的运行时间,提高代码的执行效率。例如1个数据左移1位相当于乘于2,右移一位相当于除以2(此结论只适合在运算结果没有溢出的情况)。

1、一个完整的C语言程序是由若干条语句按一定的方式组合而成的。按C语言语句执行方式的不同,C程序可分为以下三种:顺序结构、选择结构、循环结构。

顺序结构:程序按语句的顺序逐条执行;

选择结构:程序根据条件选择相应的执行顺序;

循环结构:程序根据某种条件,只要满足这个条件,就重复执行某段程序,直到条件不满足为止。如果这个条件永远存在,就形成一个死循环。死循环在单片机的C语言程序中普遍存在,最典型的例子就是每个程序的主函数中都有一个死循环(也成无限循环)while(1);

一般的C程序可以包含全部以上三种结构,也可以只包含一种或两种结构。

2、要保证C语言程序能够按照预期目的运行,还需要用到一些特殊语句对程序进行控制。1)控制语句

控制语句完成一定的控制功能,C语言中有9中控制语句

if()...else...语句:条件语句

for()...语句:循环语句

while()...语句:循环语句

do...while()语句:循环语句

continue语句:结束本次循环语句

break语句:中止循环执行语句

switch语句:多分支选择语句

goto语句:跳转语句

return语句:从函数返回语句

2)函数调用语句

函数调用语句调用已定义过的函数(注意,一定是调用已定义过的函数,没有定义过的函数不能调用)。

3)表达式语句

一个表达式后面加一个分号“;”就构成了表达式语句

4)空语句

空语句不执行任何操作,常用于消耗机器周期,延时等待等用途。

5)复合语句

用一对大括号“{}”把一些语句括起来就构成了复合语句。在上一节的实例中我们已经学习了这种语句的用法。

3、if语句

if语句用来判断所给定的条件是否满足,根据判定结果选择执行给出的操作。if语句有3种基本形式

1)if(表达式)

{

...

}

....

该if语句的执行情况为:先判断表达式的结果是否为真(非0值),如果为真,则执行大括号内的语句,否则不执行大括号内的语句。

语句示例如下:

if(i==0)

{

m=10;

}

...

这条语句所实现的功能是:如果变量i等于0,则给变量m赋值为10,否则m=10这个语句不会被执行

2)if(表达式)

{

语句1

}

else

{

语句2

}

其含义是:若条件表达式的结果为真,则执行语句1,否则,如果条件表达式的结果为假,则执行语句2.这里的语句1和语句2均可以是单个语句,也可以是复合语句

3、if(表达式1)

{

语句1

}

else if(表达式2)

{

语句2

}

else if(表达式3)

{

语句3

}

....

else

{

语句n

}

这种条件语句经常用来实现多种条件的判断,它是由if-else语句嵌套而成的,在这种结构里,else总是与距它最近的if相配对。

switch-case开关语句

1、switch-case开关语句是一种多分支选择语句,用来实现多方向条件分支。虽然采用

if-else条件判断语句也可以实现多方向条件分支,但是当分支较多时,使用if-else条件语句的嵌套层次会大大增多,从而导致程序冗长、结构混乱。switch-case语句可以直接处理多分枝选择,使程序结构清晰、使用方便。

2、switch-case开关语句的组成形式。它的一般形式如下:

switch(表达式)

{

case 常量表达式1:{语句1;} break;

case 常量表达式2:{语句2;} break;

case 常量表达式3:{语句3;} break;

....

case 常量表达式n:{语句n;} break;

default: {语句n+1;} break;

}

开关语句的执行过程是:

1)当switch后面的表达式的值与某一case后面的常量表达式的值相等时,就执行该case 后面的语句,然后遇到break语句退出该switch语句。若所有case中的常量表达式的值没有与表达式的值相匹配时,就执行default后面的语句。

2)switch后面括号内的表达式,可以是整型或字符型表达式,也可以是枚举类型的数据。3)每一个case常量表达式的值必须不同,否则就会出现自相矛盾的现象。

4)每个case和default的出现次序不影响执行结果,可以先出现default,再出现case。5)假如case语句的最后没有break这个关键字,则流程控制转移到下一个case继续执行,因此,在执行一个case分支后,如果不需要继续执行switch语句,则需要用一个break

语句来完成。

对于switch语句,有两点注意事项:一是常量表达式的值必须是整型或字符型;二是注意break语句的使用

1、在许多实际问题中,需要程序进行有规律的重复执行,这时可以用循环语句来实现。在c语言中。用来实现循环的语句有for语句,while语句,do-while语句,goto语句等。

2、for循环语句结构可使程序按指定的次数重复执行一个或一组语句。

采用for语句构成循环结构的一般形式如下:

for(初始化表达式;条件表达式;增量表达式)

{语句;}

for语句的执行过程是:

1)先计算初始化表达式的值,然后将该值作为循环控制变量的初值,

2)再计算条件表达式的结果,若其值为“真”,则执行for后面的语句;如果为“假”,那么跳出for循环语句

3)若条件表达式为“真”,则在执行指定的语句后,执行增量表达式

3)执行for后面的语句,执行完后再回到第(2)步执行。

1、while语句

while语句构成循环结构的一般形式如下:

while(条件表达式)

{语句;}

其执行过程是:先求解条件表达式的值,当条件表达式的值为“真(非0)”时,程序就重复执行大括号里面的语句,一直执行到条件表达式的结果变化为“假”才结束执行。

这种循环结构是先检查条件表达式所给出的条件,然后根据检查的结果决定是否执行后面的语句。如果条件表达式的结果一开始就为“假”,则后面的语句一次也不会被执行。

1、do-while语句

do-while语句构成循环结构的一般形式如下:

do

{语句;}

while(条件表达式);

其执行过程是:先执行一次循环体中的语句,然后再判断条件表达式的值,如果为真,则继续执行循环体,否则直接退出循环体。

因此do-while语句的特点是:无论初始条件是否满足条件表达式的要求,循环体都要至少被执行一次。所以在使用do-while语句的时候,需要认真对待这个问题。

1、goto语句为无条件转向语句,它的一般形式为:

goto 语句标号;

它是将程序运行的流向转到它所指定的标号处去执行

2、结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律,可读性差。但也不是绝对禁止使用goto语句,一般来说,可以有两种用途

1)与if语句一起构成循环结构

2)从循环体内跳转到循环体外,但在c语言中可以使用break语句和continue语句跳出本层循环和结束本次循环,goto语句的使用机会已大大减少,只是需要从多层循环的内层循环跳到外层循环时才用到goto语句。但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能够大大提高效率)才使用。

1、前面我们了解了for,while,do-while这三种循环语句,他们有一个共同特点,就是只有当循环条件不满足时,才会自动退出循环。

如果循环条件不止一个,或者需要中途退出循环时,该怎么实现呢?

此时可以考虑使用break语句,或者continue语句来实现。

2、break语句

break语句在前面的switch语句中已经有过介绍。它同时还可以用在循环体中。在循环体中遇到break语句时,立即结束循环,跳到循环体外,执行循环结构后面的语句。

break语句的一般形式是:

break;

break语句只能跳出它所处的哪一层循环,而不像goto语句可以直接从最内层循环中跳出来。所以,要直接退出多重循环,采用goto语句比较方便。

break语句只能用于switch语句和循环语句之中,它是一种具有特出功能的跳转语句。

相关主题