在解释问题之前,我想清楚地表明我没有以任何方式使用第二种语法,因为这可能很难理解和不清楚,并且我已经意识到这一点。因此,从清晰度的角度来看,您可能会忽略该问题。
现在,我们假设version: '3.5'
services:
sp-app-web-ui:
container_name: sp-app-web-ui
image: swimming-pool/web-ui-service
environment:
- SPRING_PROFILES_ACTIVE=dev
ports:
- 8080:8080
network_mode: host
和spring:
application:
name: web-ui-service
data:
mongodb:
uri: mongodb://<username>:<pwd>@172.0.0.1:27017/database
都是a
类型。 x
可能会或可能不会初始化为6或其他东西。
因此,包含第一个if语句的第一个代码段:
int
很清楚那里发生了什么。如果a
等于6,则if (a == 6){
x++;
}
递增,无论a
的值如何。
第二个if语句很简单,因为我想了解它是如何工作的:
x
我测试了几种情况,所有这些都使我得出结论,那两种情况是等效的。
我认为它的工作方式是:编译器评估x
,并基于if语句中存在逻辑和运算符的事实,它决定是否对'if (a == 6 && x++) {}
'进行评估(不评估)。评估它的正确与否真的很重要,我们不在乎)。如果第一个表达式的计算结果为假,则不必尝试第二个表达式,因为最终的计算结果还是假的。如果第一个表达式的计算结果为true,则必须检查第二个表达式,因此将a == 6
递增,与第一个代码段完全相同。
现在,我想知道:
两者之间是否存在非语法上的差异?
在两个测试中给定相同的x++
和x
的情况下,可能会出现这样一个情况:一个结果为true,另一个为false?
感谢您的阅读!在此先感谢您的回答!