一、运算符和表达式的相关概念以及分类:
**1、运算符的概念:**运算符就是一些特定的符号,用来表示针对数据的特定操作,也称之为操作符。
2、运算符的分类:分类方法不同,结果不同。
**1)**根据参与运算对象的多少可分为:单目(也称为一元运算符),双目(也称作二元运算符),三目(也称为三元运算符)
**2)**根据运算作用不同可分为:算术运算符、条件运算符、关系运算符、赋值运算符、逻辑运算符、逗号运算符、位操作运算符等。
*
*
**3、表达式的概念:**表达式最基本的形式就是一个数据,也称为操作数。操作数可以是任意类型的常量或变量,操作数与运算符结合起来可以构建一个新的表达式,继而使用多个运算符连接多个操作数可以形成更为复杂的表达式。
2)构成: C语言中的表达式由运算符、常量、变量所组成,结尾不能加分号。例如(-1)(-a)(-a+1) (-a+1*2,5) 都是表达式。
:3)注意在对表示求值时,要先执行表达式优先级高的;如果操作数两侧的运算符优先级相同,则按运算符的结合性处理,比如a+b-c,由于加与减的优先级相同,而算术运算符的结合性为从左到右,所以先执行a加b的结果,再用该结果减去C。
4)表达式命名:由表达式中优先级最低的运算符名称决定。
5)由“表达式”加“分号”构成的语句称为表达式语句。
二、算术运算符和算数表达式:
**1、**算术运算符是对 数值类型的变量进行运算的,在 C 程序中 使用的非常多,属于双目运算符,结合性从左到右,优先级为(*,/,%)>(+,-);
2、细节说明:
3、代码演示:
算术运算符:
#include
#include
int main()
{
int a=-5,b=3,c;
c=(a/b)*b;
printf("%d\n",c);
c=a%b;
printf("%d\n",c);
c=a/b*b+a%b;
printf("%d\n",c);
system("pause");
return 0;
}```
结果为:
(-3)
(-2)
(-5)
三、自增自减运算符及其表达式:
1、知识点:自增自减运算符为单目运算符,结合性为从右到左,包括++,— —;自增自减的运算符优先级大于算术运算符;要求操作数是变量;
2、使用细节:
3、代码演示:
自增自减运算符:
#include
void main() {
int i1 = 10, i2 = 20;
int i = i1++;//i =10, i1=11
printf("i=%d\n",i);// 10
printf("i1=%d\n", i1);//11
i = ++i1;
printf("i=%d\n", i);//12
printf("i1=%d\n", i1);//12
i = i2--;
printf("i=%d\n",i);// 20
printf("i2=%d\n",i2);//19
i = --i2;
printf("i=%d\n", i);//18
printf("i2=%d\n", i2);//18
getchar();
}
四、关系运算符和关系表达式:
1、知识点:
1)关系运算符有6种关系,分别为小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、等于(==)、不等于(!=)。
2)结果值:
关系运算符的值只能是0或1。
关系运算符的值为真时,结果值都为1。
关系运算符的值为假时,结果值都为0。
3)关系运算符都是双目运算,优先级为(>,<,>=,<=)>( == , != )
五、赋值运算符及其表达式:
1、知识点:赋值运算符就是将 某个运算后的值,赋给指定的变量,结合性为"从右向左"。
2、赋值运算符特点:
int a = 10;
a += 1.7; // a = a + 1.7 =>11.7 => 11
a= 11
3、代码演示:
#include
#include
void main() {
//+= 的案例,其它的类似 -= *= /= %=
int c = 12;
int a2 = 10;
//有两个变量,a 和 b,要求将其进行交换,最终打印结果
int a = 10;
int b = 20;
//思路是通过一个临时变量来实现 a , b 值的交换
int temp = a;
a = b;
b = temp;
c += 3; // 等价 c = c + 3;
//c += b;// 等价 c = c + b;
a2 += 1.7;
printf("\na=%d b=%d c=%d a2=%d", a, b, c, a2);// a=20, b = 10 c = 15 a2=11
system("pause");
}
六、逻辑运算符及其表达式:
1、知识点: 用于 连接多个条件(一般来讲就是关系表达式), 最终的结果要么是真(非 非 0 表示),要么是 假(0 表示) ;其中逻辑非的结合性为从右向左。
2、注意,逻辑与和逻辑或有短路现象:
案例演示:
“逻辑与”
#include
#include
void main() {
double score = 70;//成绩
if(score>=60 && score<=80){
printf("ok1");
} else {
printf("ok2");
}
int a = 10, b = 99;
//说明:
//1. 行 在进行 && 操作时, 如果第一个条件为 false , 则后面的条件不在判断
//2. 该现象称为 短路现象,所以 逻辑与 也称为 短路逻辑与
if(a < 2 && ++b>99) { //
printf("ok100");
}
printf("b=%d\n", b); //b=99
system("pause");
}
逻辑或:
#include
#include
void main() {
int a = 10, b = 99;
//说明
//1. 在进行逻辑或时,如果第一个条件为真,则不再执行后面的条件,整个结果为真
//2. 为 该现象称为 此 逻辑或短路现象,因此 为 逻辑或也称为 短路逻辑或
if(a > 5 || b++>100) { //
printf("ok100");
}
printf("b=%d\n", b); // b= 99
system("pause");
}
七、运算符和优先级总结:
注意:结合结合性从右向左的有:赋值和复合赋值;逻辑非;自增,自减;取地址(&);正号,负号,(+,-); 类型转换;