c语言 表达式啊a1运行过程!int a=3;执行完表达式a1后 ,a依然为3; -- -- 的优先级是最高的,为什么a不是2?(经过上机测试确实为3...)

来源:学生作业帮助网 编辑:作业帮 时间:2024/08/12 07:48:41
c语言 表达式啊a1运行过程!int a=3;执行完表达式a1后 ,a依然为3; -- -- 的优先级是最高的,为什么a不是2?(经过上机测试确实为3...)
xSN@~ i8}RR9$8B 1?JZ58cvS^6VUZYolnuYKbe9gw{AK}&siAjEeb;c.|ga8Mu #BEx20a5b_*$i앲o6M$G{:7|fwtP >b.1 5+KVJyqjJx_PԱwa#T\ң22N3Ϛ$}s^I7Qlz$l'L#za Rï[C%S%<,wFGTbW$xmC?ֈ"6kQPP)q*OPx)fgdFO-]Bf%_nO|FiQ4ֳ8"Hyކ:V`ˉ M %Ur<b|yF ^o~]:eP|Xi)H dp ~蹅H *~ }]i*t[Le=AW赜^+%Fd

c语言 表达式啊a1运行过程!int a=3;执行完表达式a1后 ,a依然为3; -- -- 的优先级是最高的,为什么a不是2?(经过上机测试确实为3...)
c语言 表达式啊a1运行过程!
int a=3;
执行完表达式a1后 ,a依然为3; -- -- 的优先级是最高的,为什么a不是2?(经过上机测试确实为3...)

c语言 表达式啊a1运行过程!int a=3;执行完表达式a1后 ,a依然为3; -- -- 的优先级是最高的,为什么a不是2?(经过上机测试确实为3...)
这涉及到一个短路计算的问题.
以下摘自《C++ Primer》:
“逻辑操作符将其操作数视为条件表达式(第 1.4.1 节):首先对操作数求值;若结果为 0,则条件为假(false),否则为真(true).仅当逻辑与(&&)操作符的两个操作数都为 true,其结果才得 true .对于逻辑或(||)操作符,只要两个操作数之一为 true,它的值就为 true.
仅当由 expr1 不能确定表达式的值时,expr2.”
《C陷阱与缺陷》中在讨论求值顺序时也有提及:
“C语言中只有四个运算符(&&、||、?=和,)存在求值顺序.运算符&&和运算符||首先对左侧操作数求值,只在需要时才对右侧操作数求值”.
你的例子中,--a并没有执行,因为a