七月听雨眠 发表于 2024-7-1 16:00:05

惰性运算优先级和结合性的问题

本帖最后由 七月听雨眠 于 2024-7-1 16:05 编辑



练习1:
      int a=0,b=1,c=1;
      int d = a && (b=b-1)||(c=c-1);
      printf("%d %d %d %d\n",a,b,c,d);//0 1 0 0
    练习2:
      int a=1,b=1,c=1;
      int d = a||(b=b-1)&&(c=c-1);
      printf("%d %d %d %d\n",a,b,c,d);//1 1 1 1



如图所示,我能理解练习1输出的是 0 1 0 0
可我想不明白练习2 为什么会输出 1 1 1 1
有大神详细能讲讲练习2的输出结果是怎么来的吗

七月听雨眠 发表于 2024-7-1 16:04:57

练习1:
      int a=0,b=1,c=1;
      int d = a && (b=b-1)||(c=c-1);
      printf("%d %d %d %d\n",a,b,c,d);//0 1 0 0
    练习2:
      int a=1,b=1,c=1;
      int d = a||(b=b-1)&&(c=c-1);
      printf("%d %d %d %d\n",a,b,c,d);//1 1 1 1
页: [1]
查看完整版本: 惰性运算优先级和结合性的问题