是004没错因为k=(++a<0)&&!(b--<=0); 这句的第一步是判断(++a<0) ----这句是假的所以后面的b--没有执行所以b的值还是4最后就输出004这是&&语句的规则。。前面是假后面就不再判断。。。
不同的编译器结果不同:VC++系列是从左到右解析表达式BC++系列是从右到左解析表达式。最好不要写这样的复合语句,而写成啰嗦但明了的判断语句。套用“编码规范”的话,“有更重要的事要你去干”。
003