当我在VS下编译此代码时,会出现一个警告。
if (m_nDarksideEffectAttCnt < m_DarkTargetIndex.size())
if (m_DuelWatchUserList.size() <= iIndex)
警告:
& warning C4018: '<=' : signed/unsigned mismatch
任何解决方案?
当我在VS下编译此代码时,会出现一个警告。
if (m_nDarksideEffectAttCnt < m_DarkTargetIndex.size())
if (m_DuelWatchUserList.size() <= iIndex)
警告:
& warning C4018: '<=' : signed/unsigned mismatch
m_nDarksideEffectAttCnt
,iIndex
)和无符号类型(即m_DuelWatchUserList.size()
)之间的比较。std::cmp_less
来解决这个问题。#include <utility> // std::cmp_less
if (std::cmp_less(m_nDarksideEffectAttCnt, vec.size()))
{
//
}
-1
(即int
)强制转换为unsigned int
,那么以下操作将不会产生错误:static_assert(1u < -1);
但是以下内容将会
static_assert(std::cmp_less(1u, -1)); // error
也请查看其他函数
std::cmp_equal
std::cmp_not_equal
std::cmp_greater
std::cmp_less_equal
std::cmp_greater_equal
m_nDarksideEffectAttCnt
和iIndex
是带符号类型,而(标准库)size()
函数返回一个无符号类型(std::size_t
)。
您可以通过将m_nDarksideEffectAttCnt
和iIndex
的类型更改为std::size_t
或在比较中进行强制转换来消除警告:
if(static_cast<std::size_t>(m_nDarksideEffectAttCnt) < m_DarkTargetIndex.size())
//...
if (m_DuelWatchUserList.size() <= static_cast<std::size_t>(iIndex))
if(m_nDarksideEffectAttCnt < static_cast<long long>(m_DarkTargetIndex.size())
//...
if (static_cast<long long>(m_DuelWatchUserList.size()) <= iIndex)