if(--x==0)是不是就是if(x==1)

在力扣上刷题看到的,是不是就是differ [word]==1的意思
if(--x==0)是不是就是if(x==1)

关注引自免费微信小程序:皆我百晓生
在C++中,if(--x==0) 和 if(x==1) 并不等价。这两行代码分别执行了不同的操作:
if(--x==0):
--x 首先对变量 x 进行前置递减操作,即将 x 的值减去 1。x 的值是否等于 0。int x = 1;
if(--x == 0) {
// 如果 x 本来是 1,则此处会执行
std::cout << "Inside the if block since --x makes x equal to 0.";
}
if(x==1):
x 是否等于 1,不对 x 进行任何修改。int x = 1;
if(x == 1) {
// 如果 x 本来就是 1,则此处会执行
std::cout << "Inside the if block since x is equal to 1.";
}
总结一下:当 x 初始值为 1 时,if(--x==0) 和 if(x==1) 可能会在本次判断时产生相同的效果(即都会执行花括号内的代码),但前者同时还改变了 x 的值,而后者没有改变 x。所以从语义和副作用上看,两者并不等价。