C++ - 逻辑操作符(&& , )应该注意的事_“逻辑运算的结果只能为true或者false

int func(int i)
{
cout << "int func(int i) : i = " << i << endl;

return i;

}

int main()
{
//逻辑与
if( func(0) && func(1) ) //func(1)没有执行
{
cout << “Result is true!” << endl;
}
else
{
cout << “Result is false!” << endl;
}

cout << endl;
//逻辑或
if( func(0) || func(1) )  //如果if( func(1) || func(0) )func(0)不执行
{
    cout << "Result is true!" << endl;
}
else
{
    cout << "Result is false!" << endl;
}

return 0;

}


**结果:**



int func(int i) : i = 0
Result is false!

int func(int i) : i = 0
int func(int i) : i = 1
Result is true!


从结果看出逻辑操作符判断顺序从左到右(**但是实际的计算次序是不定的**),在下面的代码示例会验证。



**2.逻辑操作符重载**


代码示例:



#include
#include

using namespace std;

class Test
{
int mValue;
public:
Test(int v)
{
mValue = v;
}

int value() const   //const修饰的对象只能调用const修饰的成员函数
{
    return mValue;
}

};

bool operator && (const Test& l, const Test& r) //全局操作函数重载
{
return l.value() && r.value();
}

bool operator || (const Test& l, const Test& r)
{
return l.value() || r.value();
}

Test func(Test i)
{
cout << "Test func(Test i) : i.value() = " << i.value() << endl;

return i;

}

int main()
{
Test t0(0);
Test t1(1);

if(operator&&(func(t0),func(t1)))     //函数调用形式
{  //func(t0)和func(t1)的值,且这两个的计算顺序不确定
    cout << "Result is true!" << endl;
}
else
{
    cout << "Result is false!" << endl;
}

cout << endl;

if(operator||(func(1), func(0)))    //函数调用形式
{
    cout << "Result is true!" << endl;
}
else
{
    cout << "Result is false!" << endl;
}

return 0;

}


结果:



Test func(Test i): i=1 函数都被调用,不符合原生语义的逻辑与&&(短路法则失效)
Test func(Test i): i=0
the result is false

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值