运算符和表达式

表达式:
使用运算符把操作数结合起来形成的式子,称为表达式
运算符:
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了
丰富的运算符,主要使用的运算符包括:算术运算符、关系运算符、逻辑运算符、
赋值运算符。根据运算符可操作的操作数的个数,可把运算符分为一元运算符、
二元运算符和多元运算符(一般三元)。
一、算术运算符
用于数学上的运算
1.主要运算符:
+  把两个操作数相加
-  从第一个操作数中减去第二个操作数
*  把两个操作数相乘
/  分子除以分母                                    操作数(被除数和除数)均为整数时,结果为取商(取整)。例如:16/5 结果为两数相除的商 3。当操作数中出现浮点数
                                                                  时,结果与数学中除法运算相同,包含整数部分和小数部分。例如:8/2.5 结果为 3.2。
%  取模运算符,整除后的余数            操作数(被除数和除数)都必须为整数,否则语法错误
++  自增运算符,整数值增加 1           c = a++; //后加加,表示的含义是 c=a; a=a+1;
--  自减运算符,整数值减少 1             c = a--;//后减减,表示的含义是 c=a; a=a-1;
 
自增量运算符++和--均有两种使用形式,++a、a++ 及 --a、a--,也称为前缀形式和后缀形式。当++,--在变量前,运算时,
先完成变量自身的加 1 或减 1,然后再用变量参与运算。当++,--在变量后,运算时,先让变量参与其它运算,运算
后才完成变量自身的加 1 或减 1。
在程序设计中,经常使用求商/和求余%运算规则分解整数的各位数字。
二、逻辑运算符
1. 逻辑运算符的操作数只有两个,真或假。逻辑运算符的操作数只能由逻辑值来充当。在编程时常用 0 表示逻辑假,1 表示逻辑真,实际上非 0 都表示逻辑真。
逻辑运算符往往和关系运算符联合使用。
2.逻辑运算符主要包含逻辑与&&,逻辑或||,逻辑非!。利用逻辑运算符操作逻辑值,运算结果仍然是逻辑值
&&逻辑与:
如果两个操作数都非零,则结果为真。
||逻辑或:
两个操作数中有任意一个非零,则结果为真。
!逻辑非:
如果条件为真,则逻辑非运算符将使其变为假。
逻辑与&&也称短路与,即当&&左边的操作数已经是逻辑假,则右边就不需要再判断,整个运算结果就是假。
逻辑或的短路运算与之相似。即||运算符左边如果为真的情况下,右边的值不影响运算结果,右边就不会参与运算,程序直接跳过。
三、关系运算符
关系运算本质就是比较运算。
C 语言提供的关系运算符有:>(大于)、>=(大
于等于)、<(小于)、<=(小于等于)、==(等于)和 !=(不等于)6 种二元关
系运算符。关系运算符的运算结果是逻辑值。取值为真或假。结果用于逻辑运算。
==
两个操作数是否相等,如果相等则条件为真。
!=
两个操作数是否相等,如果不相等则条件为真。
>
左操作数是否大于右操作数,如果是则条件为真。
<
左操作数是否小于右操作数,如果是则条件为真。
 >=
左操作数是否大于或等于右操作数,如果是则条件为真。
<=
左操作数是否小于或等于右操作数,如果是则条件为真。
四、赋值运算符
主要包含基本赋值运算符 =和复合赋值运算符+=(加赋值)、-=(减赋值)、*=(乘
赋值)、/=(除赋值)、%=(求余赋值)。
注意:=表示的是赋值,不是等号,表示等的运算符是关系运算符==
复合赋值的运算规则:
a+=右边表达式; 等价于 a=a+(整个右边表达式)
a-=右边表达式; 等价于 a=a-(整个右边表达式)
a*=右边表达式; 等价于 a=a*(整个右边表达式)
a/=右边表达式; 等价于 a=a/(整个右边表达式)
五、其它常用运算符
 sizeof()    返回变量的大小;
&              返回变量的地址;
*               指向一个变量;
? :            条件表达式;
例一:
#include <stdio.h>
int main()
{
int a = 4;
short b;
double c;
int* ptr;
/* sizeof 运算符实例 */
printf("Line 1 - 变量 a 的大小 = %lu\n",
sizeof(a) );
/* &和 * 运算符实例 */
ptr = &a; /* 'ptr' 现在包含 'a' 的地址 */
printf("a 的值是 %d\n", a);
printf("*ptr 是 %d\n", *ptr);
/* 三元运算符实例 */
a = 10;
b = (a == 1) ? 20: 30;
printf( "b 的值是 %d\n", b );
b = (a == 10) ? 20: 30;
printf( "b 的值是 %d\n", b );
}
*是求某个内存地址中的数据,ptr = &a 表示 ptr 存的是变量 a 的地址,*ptr 表示的就是通过 ptr 找到 a 的内存地址,然后取出内存
地址里的数据。这里就是 4
?运算符,其运算方式是,先判断?号前的条件表达式的逻辑值,如果逻辑值为真,则表达式的运算结果是?表达式后的第一个表达式的运算结果,
如果逻辑值为假,则结果是冒号:后的表达式的运算结果
例二:
#include <stdio.h>
void main()
{
int x = 100;
int y = 200;
int max = (x > y? x: y);
printf("max:%d",max);
}
解析:x > y? x: y,如果 x 比 y 大,运算结果为 x,显然 100 不大于 200。所以条件不成立,运算结果为 y,所以最终完成 max=200;
六、运算符的运算规则
 
posted @ 2020-06-10 00:57  泰勒斯儿童营养牙膏  阅读(368)  评论(0编辑  收藏  举报