语句是程序的基本组成部分。
例如:a=100
这是一个表达式,并非语句。在C语言中,只要末尾有“;”的才是语句。例如:a=100;
程序中的语句都是条完整的计算机指令。如上面的例子,C语言把任何后面带有一个分号的表达式看做一条语句,准确地说,是一条表达式语句。
所以,只有出现在数据操作部分的且带有分号的完整指令才能称为语句,而只有数据描述部分的不能称为语句,只能将其称为数据定义。
C语言最基本的语句是赋值语句,即由赋值表达式加上分号构成的语句,其功能和特点都与赋值表达式相同。
给变量赋初值是变量说明的一部分,不属于语句,赋初值后的变量与其后的其他同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。
赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。即表达式应包含在语句中,而语句是不能出现在表达式中的。
表达式语句是由表达式加上分号“;”组成。
其语法格式为:表达式;
执行表达式语句就是计算表达式的值。
例如:
p=m+n; /*赋值语句*/
y+z; /*加法运算语句,但计算结果不能保留,无实际意义*/
i++; /*自增1语句,i值增加1后,再赋值该i*/
由函数名、实际参数加上分号“;”组成。
其语法格式为:函数名(实际参数表);
执行函数语句就是调用函数体并把实际参数赋给函数定义中的形式参数,然后执行被调用函数体中的语句,求取函数值。
例如:printf("C Program"); /* 调用库函数,输出字符串*/
控制语句用于控制程序的流程,以实现程序的各种结构方式,它们由特定的关键字组成。C语言有九种控制语句,可分成以下三类:
(1) 条件判断语句:if语句、switch语句。
(2) 循环执行语句:do while语句、while语句、for语句。
(3) 转向语句:break语句、goto语句、continue语句、return语句。
把多个语句用括号{ }括起来组成的一个语句称复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。
例如:
{
x=y+z;
a=b+c;
printf(“%d%d”,x,a);
}
这是一条复合语句,复合语句内的各条语句都必须以分号“;”结尾,但在括号“}”外不能加分号。
空语句指的是只有分号“;”组成的语句,空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。
例如:while(getchar()!='\n');
本语句的功能是,只要从键盘输入的字符不是回车则重新输入,这里的循环体为空语句。
用运算符将常量、变量等操作对象连接起来、符合C语法规则的式子称为表达式。并且,单个的常量、变量、函数可以看作是表达式的特例。
根据运算符种类也可分为各种表达式,如算术表达式、关系表达式、赋值表达式等。
例如:1+2; /*此表达式使用了算术运算符+,所以将其称为算术表达式*/
每个表达式都具有一定的值,也就是其运算后的结果。表达式必须有一个特定类型,即运算结果的数据类型。
表达式的结束标志是分号“;”,C语言中所有的语句和声明都是以分号结束的,在分号出现之前,语句是不完整的。
例如:x=y+z; /*必须以分号结束表达式才算完整*/
根据表达式运算符的种类,可以将C语言中的表达式分为算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式、逗号表达式、位表达式和其他表达式等。
由以上表达式还可以组成更复杂的表达式。
例如:z=x+(y>=0);
该语句从整体上来这看是一个赋值表达式,但在赋值运算符的右边,是由关系表达式和算术表达式组成的。
在C语言中,如果程序需要对数据进行大量的运算,就必须利用运算符来处理数据。运算符是告诉编译程序执行特定算术或逻辑操作的符号,即用来对数据进行运算的符号,它连接各种数据。
算术表达式与算术运算符
自增、自减表达式与自增、自减运算符
赋值表达式与赋值运算符
关系表达式与关系运算符
逻辑表达式与逻辑运算符
条件表达式与条件运算符
逗号表达式与逗号运算符
位运算符
算术表达式是由算术运算符和括号将运算对象(也称操作数)连接起来且符合C语法规则的式子。
首先来介绍一下基本的算术运算符:
(1) 加法运算符“+”:加法运算符为双目运算符,即应有两个数据参与加法运算,如1+2,m+n等。
(2) 减法运算符“-”:减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。
(3) 乘法运算符“*”:双目运算符,如5*8,a*b等。
(4) 除法运算符“/”:双目运算符。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。
(5) 求余运算符“%”:求余运算符的运算对象必须是整型数据,求余运算的结果等于两数相除后的余数,运算结果的符号与被除数的符号相同。
自增自减运算在处理数据时主要有以下的区别,请读者注意:
(1) ++i表示:i自增1后再参与其他运算。
(2) --i表示:i自减1后再参与其他运算。
(3) i++表示:i参与运算后,i的值再自增1。
(4) i--表示:i参与运算后,i的值再自减1。
在理解和使用上容易出错的是i++和i--。特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细分析。
1. 赋值运算符
由赋值运算符将操作对象连接起来符合C语法规则的式子称为赋值表达式,其一般形式为:变量=表达式;
2. 类型转换
如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。
3. 复合的赋值运算符
在某些较为复杂的运算关系中,允许在赋值符“=”之前加上其他二目运算符,这就构成了复合赋值符。
1. 逻辑运算符
逻辑运算用来判断一件事情是“成立”还是“不成立”,或者是“真”还是“假”,判断的结果只有两个值,用数字表示就是“1”和“0”。其中,“1”表示该逻辑运算的结果是“成立”的,“0”表示这个逻辑运算式表达的结果是“不成立”的,这两个值称为“逻辑值”。
2. 逻辑表达式
用逻辑运算符把各个表达式连接起来组成一个逻辑表达式,逻辑表达式的最终值也只有两个:0和1。一般来说,1代表结果为真,0代表结果为假。
条件运算符由“?”和“:”组成,是C语言中唯一的一个三目运算符。用条件运算符将表达式连接起来的式子称为条件表达式。
条件表达式的语法格式如下:表达式1?表达式2:表达式 3;
条件表达式的执行过程是:
(1) 先计算表达式1的值。
(2) 若该值不为0,则计算表达式2的值,并将表达式2的值作为整个条件表达式的值。
(3) 否则,就计算表达式3的值,并将该值作为整个条件表达式的值。
在C语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把若干个表达式用逗号运算符连接起来组成一个表达式,称为逗号表达式。逗号运算符的优先级低于赋值运算符,是左结合性。其一般形式如下:
表达式1,表达式2,…,表达式n;
逗号表达式的操作过程是:先计算表达式1,再计算表达式2,…,最后再计算机表达式n,而逗号表达式的值为最右边表达式n的值。
位运算是指按二进制进行的运算。在系统中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于有符号或无符号的char、short、int与long类型。
各运算符含义如下:
(1) &按位与:如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。
(2) |按位或:两个相应的二进制位中只要有一个为1,该位的结果值为1。
(3) ^按位异或:若参加运算的两个二进制位值相同则为0,否则为1。
(4) ~取反:~是单目运算符,用来对一个二进制数按位取反,即将0变1,将1变0。
(5) <
(6) >>右移:将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。
C语言与其他高级语言相比, 一个显著的特点就是其运算符特别丰富, 共有34 种运算符。C语言将这34种运算符规定了不同的优先级别和结合性。优先级是用来标识运算符在表达式中的运算顺序的,在求解表达式的值的时候,总是先按运算符的优先次序由高到低进行操作,可是,当一个运算对象两侧的运算符优先级别相同时,则按运算符的结合性来确定表达式的运算顺序。