C++:计算表达的问题、逻辑运算与位运算

本文探讨了在编程中使用浮点数进行相等比较的问题,指出直接使用‘==’和‘!=’可能导致错误结果。建议采用比较浮点数差值是否在极小范围内来判断相等。同时,提到了隐式类型转换可能造成的精度丢失,以及逻辑与位运算的相关注意事项,如短路求值和逻辑推演。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算术运算

数的表示范围

中间结果溢出

浮点数的比较

#include<iostream>
#include<cmath>
using namespace std;
int main() 
{
     double d1 = 123456789.9*9;
     double d2 = 1111111109.1;
if ( d1!=d2 )  cout << “Not same\n” ;
else  cout << “Same\n” ;
if ( abs ( d1-d2 ) < 1e-05 )  cout << “Same\n” ;
else  cout << “Not same\n” ;
cout.precision(9);
cout<<fixed<<d1<<endl<<d2<<endl;
}


结论:
使用浮点数进行相等(==)和不相等(!=)的比较操作通常是有问题的
浮点数的相等比较一般采用两者相减的值是否落在0的邻域中来判断

类型转换

隐式转换

转换的精度丢失

显式转换

逻辑运算与位运算

关系逻辑运算

错误的条件表达

短路求值

逻辑推演

位运算

增量操作

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值