#include<stdio.h> main() { int a=-1,b=4,k; k=(++a<0)&&!(b--<=0); printf("%d%d%d",k,a,b);

可答案是004
2025-03-23 15:56:00
推荐回答(3个)
回答1:

是004没错
因为k=(++a<0)&&!(b--<=0);
这句的第一步是判断(++a<0) ----这句是假的所以后面的b--没有执行所以b的值还是4
最后就输出004
这是&&语句的规则。。前面是假后面就不再判断。。。

回答2:

不同的编译器结果不同:
VC++系列是从左到右解析表达式
BC++系列是从右到左解析表达式。
最好不要写这样的复合语句,而写成啰嗦但明了的判断语句。
套用“编码规范”的话,“有更重要的事要你去干”。

回答3:

003