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
。所以从语义和副作用上看,两者并不等价。