demon-in-angels 发表于 2021-8-2 14:11:43

关于短路求值中||逻辑关系词赋值的问题

#include <stdio.h>

int main()
{
   int a=3,b=3;
   (a=3)||(b=5);
   printf("a=%d,b=%d\n",a,b);

   (a=1)||(b=5);
   printf("a=%d,b=%d\n",a,b);
   return 0;   
}

为什么||左边不论为真还是为假,b都停止赋值?而&&左边为真的话,右边会继续赋值。感谢答复!

wp231957 发表于 2021-8-2 14:17:53

这个例子 不正确应该这样#include <stdio.h>

int main()
{
   int a=3,b=3;
   (a=3)||(b=5);
   printf("a=%d,b=%d\n",a,b);

   (a=0)||(b=5);
   printf("a=%d,b=%d\n",a,b);
   return 0;   
}
或的话是左边真值就不看右边了
并的话是左边假值就不看右边了

demon-in-angels 发表于 2021-8-2 14:20:47

wp231957 发表于 2021-8-2 14:17
这个例子 不正确应该这样
或的话是左边真值就不看右边了
并的话是左边假值就不看右边了

谢谢
页: [1]
查看完整版本: 关于短路求值中||逻辑关系词赋值的问题