g++编译警告:由于数据类型范围限制,比较结果永远为假

yjyj985jie 2010-01-14 05:15:49
比如说:
char* strTemp = "http://";
if (*(strTemp + 2) == 0x74)
cout<<"T"<<endl;
else
cout<<"F"<<endl;
在linux下用g++调试,第二行出现警告:由于数据类型范围限制,比较结果永远为假。在VC6下是没有问题的,
如果变成
char* strTemp = "http://";
if (*(strTemp + 2) & 0x74 == 0x74)
cout<<"T"<<endl;
else
cout<<"F"<<endl;
在linux下用g++调试通过,但是逻辑上是不好的,有没有好的解决办法?是什么原因产生这种警告?请达人指教。
...全文
521 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lesliechanxp 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
if (*(strTemp + 2) == char(0x74))
[/Quote]
请教为什么这样就没有警告?数据类型范围为什么会限制?谢谢
yjyj985jie 2010-01-14
  • 打赏
  • 举报
回复
一楼不错,挺虎,呵呵,我怎么没有想到呢,谢谢了
七十二寨寨主 2010-01-14
  • 打赏
  • 举报
回复
开个玩笑 if ((int)(*(strTemp + 2)) == 0x74)
和这位仁兄是一样的,还是下面的方法好
[Quote=引用 1 楼 healer_kx 的回复:]
if (*(strTemp + 2) == char(0x74))
[/Quote]
healer_kx 2010-01-14
  • 打赏
  • 举报
回复
if (*(strTemp + 2) == char(0x74))

65,179

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧