C语言算术表达式与逻辑表达式详解及实例分析
C语言算术表达式与逻辑表达式详解
本文将带您深入了解C语言中的算术表达式、逻辑表达式以及复合赋值语句,并结合实例进行分析。
1. 算术表达式
算术表达式是由数字、变量、运算符和括号组成的式子,用于进行数学运算。
实例分析:
(1) 表达式 3.5 + 1/2 + 56%10 的值是多少?
答案:4.50。
%是取模运算符,表示取余数,56%10 结果为 6。*/是除法运算符,1/2 结果为 0.5。* 最终结果为 3.5 + 0.5 + 6 = 10。
(2) 设 a=2,表达式 (a++ * 1/3) 的值是多少?
答案:0。
a++是后置自增运算符,先参与表达式运算,再进行自增操作。* 因此,表达式等价于 (2 * 1/3),结果为 0。
(3) 设 x=2.5, a=7, y=4.7,表达式 x + a%3 * (int)(x+y)%2 / 4 的值是多少?
答案:2.50。
(int)是强制类型转换运算符,将 (x+y) 的结果转换为整型。* 运算顺序为:先计算a%3, 再计算(int)(x+y), 然后进行%2, 最后进行/4和+运算。
(4) 设 a=2, b=3, x=3.5, y=2.5,表达式 (float)(a+b)/2 + (int)x%(int)y 的值是多少?
答案:2.00。
(float)是强制类型转换运算符,将 (a+b) 的结果转换为浮点型。* 运算顺序为:先计算(float)(a+b), 再进行/2运算,然后计算(int)x,(int)y, 最后进行%和+运算。
(5) 设 x=3, y=4,表达式 x = (x=++y, x+5, x/5) 的值是多少?
答案:9。
- 逗号表达式从左往右依次执行,最后一个表达式的值作为整个表达式的值。* 因此,先执行
x=++y,y 的值变为 5,x 的值也变为 5。* 然后执行x+5,结果为 10,但不会赋值给 x。* 最后执行x/5,结果为 2,赋值给 x。
(6) 设 x=4, y=3,表达式 (x>y>=2) ? 1 : 0 的值是多少?
答案:1。
>和>=都是关系运算符,返回值为真 (1) 或假 (0)。* 运算顺序为:先计算x>y, 结果为真 (1),再计算1>=2, 结果为假 (0)。* 由于x>y为真,因此整个表达式的值为 1。
(7) 设 a=5, b=6,表达式 (++a==b--) ? ++a : --b 的值是多少?
答案:7。
++a是前置自增运算符,先进行自增操作,再参与表达式运算。*b--是后置自减运算符,先参与表达式运算,再进行自减操作。* 运算顺序为:先计算++a, a 的值变为 6,然后进行6==6, 结果为真。* 因此执行++a, a 的值变为 7,整个表达式的值为 7。
2. 逻辑表达式
逻辑表达式是由逻辑量、逻辑运算符和括号组成的式子,返回值为真 (1) 或假 (0)。
实例分析:
设 a=3, b=4, c=5,求以下表达式的值:
(8) b>c && b==c
答案:0 (假)。
&&是逻辑与运算符,只有当两边的表达式都为真时,结果才为真。
(9) !(a>b) && !c || 1
答案:1 (真)。
!是逻辑非运算符,||是逻辑或运算符。* 运算顺序为:先计算a>b, 结果为假,然后进行!运算,结果为真。* 由于!(a>b)为真,因此整个表达式的值为真。
(10) !(a=c) && (b-c) && 0
答案:0 (假)。
- 赋值运算符
=的优先级低于逻辑运算符,因此先计算a=c, a 的值变为 5。* 由于!(a=c)为假,因此整个表达式的值为假。
(11) !(a+b)+c-1 && b+c/2
答案:1 (真)。
- 运算顺序为:先计算
a+b, 然后进行!运算,再进行+c-1运算。* 由于!(a+b)+c-1的结果不为 0,因此整个表达式的值为真。
(12) a || (b+b) && (c-a)
答案:1 (真)。
||是逻辑或运算符,只要其中一个表达式为真,结果就为真。* 由于a的值为 3,不为 0,因此整个表达式的值为真。
(13) (!a==1) && (!b==0)
答案:1 (真)。
- 运算顺序为:先计算
!a和!b, 然后进行==运算。* 由于!a为假,!b也为假,因此(!a==1)和(!b==0)都为真。
(14) a && (b || c)
答案:1 (真)。
- 由于
a,b,c的值都不为 0,因此a和(b || c)都为真。
3. 复合算术赋值
复合算术赋值是将算术运算符和赋值运算符结合起来的一种简写形式。
实例分析:
设 a=12,分别执行以下代码后,a 的值是多少?
(15) a += a
答案:24。等价于 a = a + a。
*(16) a = 2 + 3
答案:60。等价于 a = a * (2 + 3)。
(17) a /= a + a
答案:0。等价于 a = a / (a + a)。
(18) a >>= 2
答案:3。右移运算符,等价于 a = a >> 2。
*(19) a += a -= a = a
答案:-144。
- 运算顺序为:先计算
a *= a, a 的值变为 144。* 然后计算a -= 144, a 的值变为 0。* 最后计算a += 0, a 的值仍然为 0。
(20) a <<= a -= 8
答案:3072。
- 运算顺序为:先计算
a -= 8, a 的值变为 4。* 然后计算a <<= 4, a 的值变为 64。
总结
本文详细介绍了C语言中算术表达式、逻辑表达式以及复合赋值语句的运算规则和求值方法,并结合实例进行了分析,希望对您理解C语言运算符的优先级和结合性有所帮助。
原文地址: https://www.cveoy.top/t/topic/dhIF 著作权归作者所有。请勿转载和采集!