这是关于此警告消息的小而清晰的帖子,起初看起来很奇怪。但是仔细观察,其背后的原因非常清楚而直接。涉及到代码移植性。

警告:由于数据类型范围有限,比较始终为假

这是一段简单的代码,当在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::nposreturn size_t,它表示当前体系结构上的无符号本机整数大小。
因此,在32位体系结构上:
        unsignedsize_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]相关推荐

  1. OpenJDK:构建JDK

    编者注:在这一期的 开源之路 中,作者和 Cafe Au Lait 的创始人 Elliotte Rusty Harold 接管了目前的 Java SE 7 开发系列文章.因为 OpenJDK 项目 的 ...

  2. 消灭编译警告(Warning)

    From: http://blog.csdn.net/liuysheng/article/details/7165143 如何看待编译警告 当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个 ...

  3. c语言编译如何去掉warning,16种C语言编译警告(Warning)类型的解决方法

    当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...

  4. C语言编译出现一个警告,16种C语言编译警告(Warning)类型的解决方法

    当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...

  5. 编译警告(Warning)

    如何看待编译警告 当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译 ...

  6. c语言0xa9错误,16种C语言编译警告(Warning)类型的解决方法

    当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息.警告信息可能意味着程序中隐含的大错误,也可能确实没有问题.对于警告的正确处理方式应该是:尽可能地消除之.对于编译程序给出的每个警告 ...

  7. linux gcc编译常见问题,常见gcc编译警告整理以及解决方法 - 常见gcc编译警告整理以及解决方法...

    三.常见gcc编译警告整理以及解决方法 1.warning: no newline at end of file 在文件最后一行加上回车键 解释:在<Rationale for the C99 ...

  8. linux编译警告不能连接,linux编译警告信息

    类型1: 显示:warning: implicit declaration of function `Example()'. 警告原因:(1)在你的.c文件中调用了函数Example(),可是你并没有 ...

  9. 使用memcache的session入库

    使用memcache的session入库 Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序.它是 ...

最新文章

  1. Leader忙死,下属闲死,谁的错?总监让我学习,猴子理论
  2. Linux查看系统信息的一些命令及查看已安装软件包的命令(转)
  3. 精简版开发工具使用手记(图解)
  4. 2020-11-19
  5. Create groups 与 Create folder references的区别
  6. Springboot中如何在Utils类中使用@Autowired注入bean
  7. html脚本src,HTML script脚本标签
  8. 国内8大知名工程项目管理软件推荐
  9. 转发-分享手机游戏辅助编程开发教程
  10. 新手学习电脑知识的一些方法
  11. 嵌入式编程 while(1)的妙用!
  12. linux时间同步到win7,mac与win7时间不同步怎么办_mac与win7时间不准如何解决
  13. 如何看待阿里云成立新零售事业部?
  14. windows server2008 部署项目环境总结
  15. iOS - 一份参考简历,请注意查收!
  16. 秀技能:倒立及其他没用的
  17. sparkSql 随机打散分配
  18. java的mysql语句规范_mysql 规范
  19. 以太坊 geth 命令相关
  20. JQuery使用教程

热门文章

  1. c语言中int是高级语言,高级语言程序设计(一)2010年10月真题
  2. 2023(Q2)起重司机(限门座式)模拟一[安考星]
  3. reflector使用教程
  4. 2015最新iOS QQ登录(64位)
  5. 三年百度,五年阿里,阿里p8架构师浅谈:我是如何顺利进入BAT
  6. 游戏场景建模需要会美术画画吗?来看沙盒游戏是怎么做出来的
  7. 用友NC Cloud自由报表的首次设计体验(配合图文)
  8. java南方八字排盘_八字排盘示例代码
  9. 第10章 项目:多类花朵分类
  10. 好花堪赏直需赏,莫待花开就折枝