程序的输出结果是( ) main() { int a=-1,b=4,k; k=(++a<=0)&&!(b--<=0); printf("%d %d %d",k,a,b); }
发布网友
发布时间:2022-04-27 02:58
我来回答
共2个回答
热心网友
时间:2023-11-18 04:58
考的是运算符优先级http://ke.baidu.com/link?url=IL17TMPY1OPIEkLlnNdfhjCWxGWh5gu6MLMTSVVaN8VbTegB5aVueWR8eVmkR9NFAXYkkcnLrb4EoWn_Jgqncm5m2zTjW_GqbkV9JpcqT5GcGIuMG310Hlt7ZqUHAOex9o2GQIn_KuZRbcRRiv5Oka这里有详细的
解答你的题:
前置++的运算优先级小于<=所以先<= a<=0为1(真)++后结果为2;0<=0所以第一个表达式为真结果为1。注意此时a的值为0
第二个表达式同理b--=3;3<=0为假表达式结果为1,现在算!(1)=0;
最后算与运算2&&0=0(0为假2>0C语言中不为0的都是真,与运算的含义是俩都为真才为真所以结果为1)因此k=1;
k=1,a=0,b=3
热心网友
时间:2023-11-18 04:59
k=(++a<=0)&&!(b--<=0)
(++a<=0) 为 True ++a为加一后再执行 此时 a = 0
!(b--<=0) 为 True b--为执行完后再减一 此时 b = 4
比较完成后 b = 3
k = True %d 转换为 1