从品牌网站建设到网络营销策划,从策略到执行的一站式服务
本篇内容介绍了“C++为什么不要混用有符号数和无符号数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
成都创新互联专注于昌黎企业网站建设,自适应网站建设,商城网站建设。昌黎网站建设公司,为昌黎等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务
ES.100:不要混用有符号数和无符号数
Avoid wrong results.
避免错误的结果。
Example(示例)
int x = -3;
unsigned int y = 7;
cout << x - y << '\n'; // unsigned result, possibly 4294967286
cout << x + y << '\n'; // unsigned result: 4
cout << x * y << '\n'; // unsigned result, possibly 4294967275
It is harder to spot the problem in more realistic examples.
在更加贴近实际开发的代码中发现问题会更加困难。
Note(注意)
不幸的是,C++使用有符号整数作为数组的下标,而标注库使用无符号整数作为数组的小标,这破坏了一致性原则。使用gsl::index作为下标。参见ES.107。
Enforcement(实施建议)
Compilers already know and sometimes warn.
编译器可以识别这方面的问题,有时会发出警告。
(To avoid noise) Do not flag on a mixed signed/unsigned comparison where one of the arguments is sizeof or a call to container .size() and the other is ptrdiff_t.
(为了避免误判)当一个参数是sizeof或者container.size()的返回值,而另一个参数是ptrdiff_t的时候,不要标记有符号数/无符号数混合的比较操作。
“C++为什么不要混用有符号数和无符号数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图