电子渣男 2022-01-14 11:21 采纳率: 85.7%
浏览 25
已结题

关于不理解逻辑运算的问题

main()
{
    int x,y,z;
    x=y=z=-1;
    printf("%d%d%d",x,y,z);
    ++y&&++x||++z;
    printf("%d%d%d",x,y,z);
}

为什么第二次打印x还是-1呢

  • 写回答

3条回答 默认 最新

  • Rattenking 优质创作者: python技术领域 2022-01-14 11:29
    关注

    ++y&&++x||++z;

    1. 这个表达式先执行++y&&++x
    2. 同时满足true才返回true,但是++y是0所以不会执行后边的++x
    3. 也就是说:++y&&++x这句执行完成,y=0,x=-1(x不变)
    4. 再执行 0 || ++z(||表示只要有个true,就返回true,不执行后边代码)
    5. 由于前边执行返回0,是false,所以执行后边++z,最后z=0
    6. 最后printf("%d%d%d",x,y,z)输出-1,0,0
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月22日
  • 已采纳回答 1月14日
  • 创建了问题 1月14日