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