C++太极门小弟子 发表于 2021-5-21 11:01:02

S1E9

#include <stdio.h>

int main() {
        int a = 3, b = 5;
        (a = 0) && (b = 3);
        printf("a=%d, b=%d\n", a, b);
        (a = 1) || (b = 3);
        printf("a=%d, b=%d\n", a, b);
        return 0;
}
视频里讲解短路求值的例子,为什么逻辑表达式可以这样用(平常见到的都是在循环里没见过直接出来的),它的效果是什么{:10_245:}

wp231957 发表于 2021-5-21 16:50:08

我猜也就是演示一些用法,平时没这么玩的

万千只cnm 发表于 2021-5-21 18:48:37

演示短路吧 有列子更清楚

1055741510 发表于 2021-5-21 19:57:34

(表达式1) && (表达式2) :如果表达式1为假,那么不再执行表达式2
(表达式1) || (表达式2): 如果表达式1为真,那么不再执行表达式2
比如 int m=2, n=2;
       int a=1, b=2, c=3
       (m=a>2) && (n=b>3);//a>2为假(0) ,m=0(假) ,则不再执行 n=b>3, 最后结果为 m=0, n=2

C++太极门小弟子 发表于 2021-5-23 17:13:34

wp231957 发表于 2021-5-21 16:50
我猜也就是演示一些用法,平时没这么玩的

{:10_269:}确实很少见过这么用的

王之叹息 发表于 2021-5-23 18:28:59

首先你应该明白这&&和||号的作用吧,然后你的问题写在注释里了,如下:
#include <stdio.h>

int main() {
      int a = 3, b = 5;
      (a = 0) && (b = 3);//效果就是执行a=0;由于a=0导致这一行的结果已经注定为假也就是0了,所以b=3没执行,所以b仍=5;
      printf("a=%d, b=%d\n", a, b);
      (a = 1) || (b = 3);//效果就是执行a=1;由于a=1导致这一行的结果已经注定为真也就是1了,所以b=3仍没执行,所以b仍=5;
      printf("a=%d, b=%d\n", a, b);
      return 0;
}
满意的话给个最佳答案吧亲{:5_92:}{:5_92:}
页: [1]
查看完整版本: S1E9