C++ warning: comparison is always false due to limited range of data type [-Wtype-limits]
这是关于此警告消息的小而清晰的帖子,起初看起来很奇怪。但是仔细观察,其背后的原因非常清楚而直接。涉及到代码移植性。
警告:由于数据类型范围有限,比较始终为假
这是一段简单的代码,当在64位体系结构上运行时,将产生以上警告。
string subject = "A[1]";
string search = "1";
unsigned location = subject.find(search); // location is unsigned
if( location == std::string::npos) cout << " true";
else cout << " false";
这里的问题是std::string::npos
return size_t
,它表示当前体系结构上的无符号本机整数大小。
因此,在32位体系结构上:
unsigned
和size_t
都具有相同的大小,
但是,在64位计算机上:
unsigned
将会是size-4并且size_t
将是size-8。
因此,当在64位计算机上运行。
因此,上述代码的正确解决方法是使location变量的大小为size_t类型。
string subject = "A[1]";
string search = "1";
size_t location = subject.find(search); // location is unsigned
if( location == std::string::npos) cout << " true";
else cout << " false";
或者location变量的大小为uint64_t类型。
string subject = "A[1]";
string search = "1";
uint64_t location = subject.find(search); // location is unsigned
if( location == std::string::npos)cout << " true";
elsecout << " false";
C++ warning: comparison is always false due to limited range of data type [-Wtype-limits]相关推荐
- OpenJDK:构建JDK
编者注:在这一期的 开源之路 中,作者和 Cafe Au Lait 的创始人 Elliotte Rusty Harold 接管了目前的 Java SE 7 开发系列文章.因为 OpenJDK 项目 的 ...
- 消灭编译警告(Warning)
From: http://blog.csdn.net/liuysheng/article/details/7165143 如何看待编译警告 当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个 ...
- c语言编译如何去掉warning,16种C语言编译警告(Warning)类型的解决方法
当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...
- C语言编译出现一个警告,16种C语言编译警告(Warning)类型的解决方法
当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...
- 编译警告(Warning)
如何看待编译警告 当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译 ...
- c语言0xa9错误,16种C语言编译警告(Warning)类型的解决方法
当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...
- linux gcc编译常见问题,常见gcc编译警告整理以及解决方法 - 常见gcc编译警告整理以及解决方法...
三.常见gcc编译警告整理以及解决方法 1.warning: no newline at end of file 在文件最后一行加上回车键 解释:在<Rationale for the C99 ...
- linux编译警告不能连接,linux编译警告信息
类型1: 显示:warning: implicit declaration of function `Example()'. 警告原因:(1)在你的.c文件中调用了函数Example(),可是你并没有 ...
- 使用memcache的session入库
使用memcache的session入库 Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序.它是 ...
最新文章
- Leader忙死,下属闲死,谁的错?总监让我学习,猴子理论
- Linux查看系统信息的一些命令及查看已安装软件包的命令(转)
- 精简版开发工具使用手记(图解)
- 2020-11-19
- Create groups 与 Create folder references的区别
- Springboot中如何在Utils类中使用@Autowired注入bean
- html脚本src,HTML script脚本标签
- 国内8大知名工程项目管理软件推荐
- 转发-分享手机游戏辅助编程开发教程
- 新手学习电脑知识的一些方法
- 嵌入式编程 while(1)的妙用!
- linux时间同步到win7,mac与win7时间不同步怎么办_mac与win7时间不准如何解决
- 如何看待阿里云成立新零售事业部?
- windows server2008 部署项目环境总结
- iOS - 一份参考简历,请注意查收!
- 秀技能:倒立及其他没用的
- sparkSql 随机打散分配
- java的mysql语句规范_mysql 规范
- 以太坊 geth 命令相关
- JQuery使用教程