表达式:由运算符和运算对象(操作数)组成的有意义的运算式子,它的值和类型由参加运算的运算符和运算对象决定。
运算符:具有运算功能的符号
运算对象:常量、变量和函数等表达式
表达式有算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式和逗号表达式等。
- 算术表达式
(1)算术运算符:
有++、--、+、-、*、/、%,还有正+、负-。
其中++、--、+、-为单目运算符,意思是只有一个操作数。
其它为双目运算符,运算符左右各有一个操作数。
(2)结合性:从左算到右。
(3)优先级:单目运算优先于双目运算,单目运算中*、/、%优先于+、-。
(4)自增运算符++(自减运算符—和自增运算符++类似用法,以下只讲++)
++是使变量的值增1。
++n和n++一样,都是n = n + 1的意思。
如果作为独立语句使用,则++n和n++一摸一样。
但是如果不是独立语句,a=n++和a=++n的用法有所区别。
a=n++:先把n的值赋给a,然后n再加1,执行后a的值比n的值小1。
a=++n:n的值先加1,然后再把n的值赋给a,执行后a的值和n的值是一样的。
程序1:
运行结果:
a=n++: n先用,再加;
a=++n: n先加,再用。
- 赋值表达式
简单赋值运算符:=
复合赋值运算符:+=、-=、*=、/=、%=
赋值表达式语法格式:变量 赋值运算符 表达式
- 简单赋值表达式
语法:变量 = 表达式;
含义:计算赋值运算符右侧表达式的值,将该值赋给左侧的变量,整个赋值运算符的值是左侧的变量的值。
(I)赋值运算符 =
x = 3*4;
将赋值号=右边表达式的值赋予左边的变量。
(II)结合性从右向左,如以下语句:
x = y = 3;
是先执行y=3,然后再执行x=y。
(III)类型转换:右侧表达式的类型自动转换成左侧变量的类型。
如若有定义:
int n;
double x, y;
则执行:
n = 3.14 * 2;
后,n的值为6。
而如果后面再执行:
x = n;
后,x的值为6.0。
程序2:
运行结果:
(2)复合简单赋值表达式
语法:
变量 += 表达式;
变量 -= 表达式;
变量 *= 表达式;
变量 /= 表达式;
变量 %= 表达式;
含义:
x += 表达式;
等价于:
x = x + 表达式;
如:
x *= y – 3;
等价于:
x = x * (y-3);
所以如果你以后看到程序里有这样的语句:
sum += x ;
那你就知道这是:
sum = sum + x;
的意思了。
3、关系表达式
(1)关系运算符有6个:
<、<=、>、>=、==、!=
(2)关系表达式:用关系运算符将2个表达式连接起来的式子。
(3)关系运算的结果:1(真)、0(假)。
(4)关系运算的结合性:左结合(从左开始算到右)。
4、逻辑表达式
(1)逻辑运算符有3个:!、&&、||。
(2)逻辑运算结果:1(真)、0 (假)。
(3)逻辑运算对象:关系表达式或逻辑量(1或0)。
如:
x >= 3 && x <= 5
!x
判断逻辑量的真假:非0 (真) 0 (假)
(4)逻辑运算的规则:
严格来说,真值表应该是这样:
(5)逻辑运算符的优先级:
!优先于&&,&&优先于||。
(6)逻辑运算的结合性:
左结合(从左开始算到右)。
5、算术运算、赋值运算、关系运算、逻辑运算的优先级:
最高:逻辑非(!)
第2: 算术运算符(单目运算优先于双目运算,双目运算中*、/由优先于+、-)
第3:关系运算符(其中优先于==、!=)
第4:逻辑与(&&)
第5:逻辑或(||)
第6:赋值运算符(=)
6、总结
今天讲了算术运算、赋值运算、关系运算、逻辑运算,给出各个运算的运算符和表达式,并给出各种运算的优先级。