注册 登录
编程论坛 C语言论坛

运行结果变量b没有减1

chen3bing 发布于 2021-11-05 09:55, 1198 次点击
有一道面试题

#include <stdio.h>


int main(void)
{
    int a=-1,b=4,k;
    k=(++a<0)&&!(b--<=0);
    printf("%d,%d,%d\n",k,a,b);
    return 0;
 }

运行结果0,0,4

为什么b没有减1呢?高手指教!谢谢!
2 回复
#2
Knocker2021-11-05 15:05
面试?这个不应该至多是C2的题吗?
#3
rjsp2021-11-05 16:17
(++a<0) && !(b--<=0)

因为 && 的左边 (++a<0) 的评估值是 false,所以不用再去评估 && 右边的表达式
1