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...)](/uploads/image/z/955528-16-8.jpg?t=c%E8%AF%AD%E8%A8%80+%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%95%8Aa1%E8%BF%90%E8%A1%8C%E8%BF%87%E7%A8%8B%21int+a%3D3%3B%E6%89%A7%E8%A1%8C%E5%AE%8C%E8%A1%A8%E8%BE%BE%E5%BC%8Fa1%E5%90%8E+%2Ca%E4%BE%9D%E7%84%B6%E4%B8%BA3%EF%BC%9B+--+--+%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7%E6%98%AF%E6%9C%80%E9%AB%98%E7%9A%84%2C%E4%B8%BA%E4%BB%80%E4%B9%88a%E4%B8%8D%E6%98%AF2%3F%EF%BC%88%E7%BB%8F%E8%BF%87%E4%B8%8A%E6%9C%BA%E6%B5%8B%E8%AF%95%E7%A1%AE%E5%AE%9E%E4%B8%BA3...%EF%BC%89)
xSN@~i8}R R9$8B1?JZ58cvS^6VUZYolnuYKbe9gw{AK}&siAjEeb;c.|ga8Mu#BEx20a5b_*$i앲o6M$G{:7|fwtP>b.15+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