当前位置:文档之家› c语言运算符和表达式

c语言运算符和表达式


}
28
§3.3 逻辑表达式
3.3.1 关系运算符及关系表达式 1.关系运算符
关系运算符是用来比较两个运算对象大 小的,运算结果是成立或不成立。 如果成立,则结果为逻辑值“真”,用整 数 “1”来表示;如:5>=5 如果不成立,则结果为逻辑值假”,用整 数“0”来表示。如:5<5
29
§3.3 逻辑表达式
3,再赋给a。
例如: a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8) x%=3 等价于 x=x%3
26
是个整体
复合赋值运算表达式: 变量 双目运算符=表达式
注意:如果=右边是包含若干项的表达式,则相 当于它有括号。 步骤: 1)左边变量的当前值与右边整个表达 如: ① x %= y+3 式进行相应运算。 ② x %= (y+3) 2)把1)的结果赋给左边的变量。 3)赋值表达式的值是左边变量的值。 |__↑ ③ x = x %(y+3)(不要错写成x=x%y+3) 27
6
③ 运算符在整个运算符系统中的优先级。优 先级是指在运算对象的左右都有运算符时 运算的先后次序。运算对象先做优先级高 的运算。如:*/比+-优先级高。
④ 运算符操作的数据的结合性。运算符的结 合性规定了在表达式求解过程中,若运算 对象其左右运算符优先级相同时的运算方 向。结合性有两种:左结合(从左到右计 算)和右结合(从右到左计算)。
表达式书写的一般规则: 表达式必须写在同一行上,只能使用圆括号, 且左右括号个数要相同,有多层括号时内层 括号中的运算优先。 如:

1 ax ax 2 4x
写作:
1.0/2*(a*x+(a+x)/4/x)
例: 写出下列代数式的C算术表达式
•[1+(4+x)1/3]x
y 2 x2 y2
i=i+1 k=i k=i i=i+1
i=2; k=++i; i=2; k=i++;
i=3
k=3
i=3
k=2
17
例3.1 #include <stdio.h> void main() { int a=2,b=2,x,y;
运行结果: x=3 y=1 a=1 b=3
a=a-1,x=a+2 x=--a+2; //前缀运算 y=b-1,b=b+1 y=b++-1; //后缀运算 printf("x=%d y=%d\n",x,y); printf("a=%d b=%d\n",a,b); }
5
学习运算符,主要掌握以下4点:
① 运算符操作的数据的类型。不同的运算符操 作的数据的类型不一定相同;而且每种运算 符操作的数据的类型是相对固定的。
② 运算符操作的数据的个数。不同的运算符操 作的数据的个数不一定相同;根据运算符连 接运算对象的个数,一般分为单目运算符 (如++、--)、双目运算符(如* / %)和 三目运算符(如?:)。
-- 自减运算符
10
算术运算符的优先级和结合性 单目 + - ++ - 双目 * / %
从左向右 高 从右向左
双目 + -

如:-5+3%2 相当于 (-5)+(3%2) 结果为 -4(优先级) 3*5%3 相当于 (3*5)%3 结果为 0 (结合性)
11
注意: 1) +、-、*、/与数学中的运算顺序相似,先 乘除,后加减,从左到右。 2)求余运算符%要求两个运算对象均为整型数 据。余数符号与左边的运算对象符号相同。 如:2%3为2,-9%5为-4,运算符将运算对象(常量、变量、函数等) 连接而成的式子。 如 a*b/c-1.5+'a'
表达式使用时应注意表达式的值及类型。 a. 不同类型的运算符所表示的表达式类型也 是不同的。表达式一般有算术表达式、赋值表 达式、关系表达式、逻辑表达式、逗号表达式、 条件表达式等表达式。 b. 表达式虽然有各种类型,但它总是有确定 的值的,根据运算符的优先级和结合性进行计 算。 8
C语言提供的6种关系运算符:
运算符 > < == >= <= != 名称 大于
小于 等于 大于等于 小于等于 不等于
例子 a>b
a<b a==b a>=b a<=b a!=b
30
2.关系运算符的优先级:
关系运算符的优先级低于算术运算符,高于赋值运算符。
<、>、 < =、>=的优先级相同。 ==、!=的优先级相同。 关系运算符的结合性:左结合 如: int x=7; 计算下面关系表达式的值:
3)%、/运算符的右操作数不可以为0。
4)字符类型的数据以该字符的ASCII码参加运 算。 如:‘a‟+2 相当于97+2。
12
5)/运算符,操作数的类型不同,功能不同。 • 当两个操作数均为整型时,其结果的类型也为整型。 a.若除数和被除数都为正值,结果为正,直接舍去小数 部分,如:5/2的结果为2。 b.若除数或被除数中有一个为负值, 则舍入的方向是不固定的。 如:-5/3=? 多数机器采取“向零取整”的方 法,即5/3=1,-5/3=-1,取整后向零靠拢。 • 若两个操作数中有一个为实数,则结果是 double 型。 • 因为所有实数都按double型进行运算。 如:5.0/2的结果2.5. 13
18
例3.2 #include <stdio.h> void main() { int a=2,b=2,c; 说明:C语言处理 时是从左到右取最 a=a+1, c=a+b, b=b-1 c=++a+b--; // 变量a为前缀运算,b为后缀运算 多个数的符号作为 printf("a=%d,b=%d,c=%d\n",a,b,c); 一个合法的运算符。 输出:a=3,b=1, c=5 a=b=2; c=-(a--)-b c=-a-b, -a=a-1 a的自减,最后的 表示减法运算 c=-a---b; // 连续的---表示前两个是对 printf("a=%d,b=%d,c=%d\n",a,b,c);
内容回顾
单个字符的输入和输出函数 字符输出函数putchar(c ) 字符输入函数getchar( ) 格式化输入(scanf)输出(printf)函数的用法 整型数据的输入输出 (%d,%o,%x,%u) 实型数据的输入输出(%f,%e,%lf,%le) 字符型数据的输入输出(%c)
常用函数(包含头文件,函数原型)
3.1.2
算术表达式:
用算术运算符和括号将运算对象(也称操 作数)连接起来的、符合C语法规则的式子, 称为C算术表达式。运算对象包括常量、变量、 函数等。 例如: a*b/c-1.5+′a′ 是一个合法的表达式。
20
§3.2 赋值表达式
3.2.1 赋值运算符
1)运算符:= 2)作用:将一个数据或表达式的值赋给一个变量。 如:a=3 //表示把常量3赋给变量a y=a*sin(z) //表示把表达式a*sin(z)的结果求出来再赋给一个变量y 注:赋值运算符与数学中的等号不同,赋值运算符求解 后能够得到一个运算结果。 3)赋值运算符的优先级和结合性: 优先级较低,结合性是从右向左。 如:x=y=3;
15
++、--作用于变量的形式有两种: 前缀方式(prefix):运算符 变量,如++i、--i ; 后缀方式(postfix):变量 运算符,如i++、i--; ++i,--i:在使用i之前,先使i 的值加(减)1 i++,i--:在使用i之后,再使i 的值加(减)1
16
自增、自减运算取变量的值作为表达式的值. 如:设n=10; ++n:1)n=n+1=11;2)取n值11作为表达式++n的值. n++:1)取n值10作为表达式n++的值;2)n=n+1=11. int i, k; 例子:
b.赋值表达式中右边的表达式又可以是赋值表 达式。 例: a=b=7 赋值表达式中含有多个赋值运算符时,从右向 左依次赋值。
c.赋值表达式可以以表达式形式出现在某些语 句(如输出语句、循环语句等)中。 23 如:printf("%d",a=b);
3.2.3 赋值语句 变量 = 表达式; 功能:先计算表达式的值,然后将值赋给 变量。 例: int a,b,c; float x, y; x=sqrt(7); y=x+4; a=b=c=6;
a=b=2; printf("a=%d\n",a++); 输出:a=2 输出:b=3 b=b+1 printf("b=%d\n",++b); c= (a+1)+(b+1) c=a+b; // a、b增1后的值参加运算 printf(“c=%d\n”,c); 输出:c=6 19 }
输出:a=1,b=2, c=-4
例3.3 赋值运算符的使用 #include <stdio.h> 结果 : void main( ) a=3,b=30,c=2 { int a=5, b=5,c=5; a-=2; a=a-2 b*=a+3; b=b*(a+3) c/=a-1; c=c/(a-1) printf("a=%d,b=%d,c=%d\n",a,b,c);
21
3.2.2 赋值表达式
变量=表达式
• 计算赋值运算符右侧表达式的值 • 将赋值运算符右侧表达式的值赋给左侧的变量 • 将赋值运算符左侧的变量的值作为表达式的值
相关主题