逻辑非的优先级最高,逻辑与次之,逻辑或最低
练习 2_4 若有 int a=3,b=0;则表达式 a&&!b 的值为 1。
练习 2_5 设有变量说明:int a=8,b=7;那么执行语句:printf("%d,%d \n",++a,b--),输出
的结果是 9,7
练习 2_6 设 a,b,c 均为 int 型变量,则执行语句 a=b=3;c=++a||++b;后,b 的值为 3。
练习 2_7 设 x、y 和 z 都是 int 型变量,且 x=8, y=3, z=5, 则表达式 x*y/z+6-14%z 的值为 6。
练习 2_8 设有定义:int x=1,y=-1;则执行语句 printf("%d\n",(x--&++y);后的输出结果是 0。
练习 2_9 设 x,y,z,t 均为 int 型变量,则执行以下语句 x=y=z=1;t=++x||++y&&++z; 后,
x、y、z、t 的值分别为 2,1,1,1。
6、条件运算符
表达式 1?表达式 2:表达式 3
注意:
结合性是自右向左。a>b?a:c>d?c:d 相当于 a>b?a:(c>d?c:d)
条件运算符的优先级别高于赋值运算符,低于关系运算符和算术运算符。如:
a>b?a-b:b-a 相当于 a>b?(a-b):(b-a)
练习 2_10 设有变量说明:int x=3,y=5;那么表达式:z=x>y?x:y 运算后,z 的值是 5。
7、位运算符
位运算符是对其操作数按其二进制形式逐位进行运算,参加位运算的操作数必须为整数。
练习 2_11 int a=5,b=6;a&b=4;a|b=7;a^b=3;~b=-7;b<<2=24;b>>2=1。
注:在位运算中,操作数左移三位,其结果相当于操作数乘以 8。
8、逗号运算符
表达式1, 表达式2, ……, 表达式 n
注意:
自左至右,依次计算各表达式的值,“表达式 n” 的值即为整个逗号表达式的值。如:a = 3 *
5, a * 4, a + 5 的值为 20。
▲四、运算符的优先级与结合性
1、所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的
运算符结合,还是先与右边的运算符结合。
自左至右的结合方向,称为左结合性。反之,称为右结合性。
结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运
算符都是左结合性。
2、表达式求值
按运算符的优先级高低次序执行。例如,先乘除后加减。
如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按C语言规定的结合
方向(结合性)进行。
例如,算术运算符的结合方向是“自左至右”,即:在执行“a – b + c”时,变量 b 先与减号
结合,执行“a - b”;然后再执行加 c 的运算。
练习 2_12 设 int x=2,y=3,z=4; 执行语句行 x++;y+=1;z=x+y--以后,x,y 和 z 的值分别是多
少?
答案:3,3,7
练习 2_13 若有定义 int m=2;则逻辑表达式(m=3)&&(m= =3)的值是 1。
练习 2_14 如果 a=5,b=3,c=7,d=9,则条件表达式 a<b?a:c<d?c:d 的值为多少?结果为 7。
练习 2_15 设 a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b) && (n=c>d);后,n 的值为 2。
练习 2_16 如果 a=5,b=3,c=7,d=9,则条件表达式 a<b?a:c<d?c:d 的值为 7。
第三章 顺序结构程序设计
评论0
最新资源