【发布时间】:2013-01-27 22:22:54
【问题描述】:
我使用的对象通常会有(签名的)int 参数(例如int iSize),这些参数最终会存储某物应该有多大。同时,我会经常将它们初始化为-1,以表示对象(等)尚未设置/尚未填充/尚未准备好使用。
当我执行if( iSize >= someVector.size() ) { ... } 之类的操作时,我经常会收到警告comparison between signed and unsigned integer。
因此,我名义上不想要使用unsigned int。是否有任何情况会导致错误或意外行为?
如果不是:处理此问题的最佳方法是什么?如果我使用编译器标志-Wno-sign-compare,我可能(假设)错过我应该使用unsigned int(或类似的东西)的情况。所以在与unsigned int 进行比较时,我是否应该只使用演员表——例如if( iSize >= (int)someVector.size() ) { ... }?
【问题讨论】:
-
Absolutely 它可能会导致意外(但已定义)的结果。
标签: c++ comparison int warnings unsigned