这主要是看if的条件语句返回的是什么。赋值语句返回的是true或false。所以通过。在我机器上第一个也是编译错误,看到楼上说没问题,我想那就是编译器实现差异的问题了。就是说在有些编译器int i(3)是返回一个布尔型的,而其他则不然。
在我机器上两个都可以啊!!!楼主是不是搞错了?int i;if(i(3))这种情况就不行!!!因为他会将i()默认成为一个函数!!!
确实是可以的 估计是编译器的缘故,有些编译器可能没有这种写法