关于在 中找到的那些定义stdint.h
,我希望测试一个函数,用于将 的向量int8_t
或 的向量转换为 的int64_t
向量std::string
。
这是我的测试:
TEST(TestAlgorithms, toStringForInt8)
{
std::vector<int8_t> input = boost::assign::list_of(-128)(0)(127);
Container container(input);
EXPECT_TRUE(boost::apply_visitor(ToString(),container) == boost::assign::list_of("-128")("0")("127"));
}
TEST(TestAlgorithms, toStringForInt64)
{
std::vector<int64_t> input = boost::assign::list_of(-9223372036854775808)(0)(9223372036854775807);
Container container(input);
EXPECT_TRUE(boost::apply_visitor(ToString(),container) == boost::assign::list_of("-9223372036854775808")("0")("9223372036854775807"));
}
但是,我在 Visual Studio 中收到了一条警告:
std::vector<int64_t> input = boost::assign::list_of(-9223372036854775808)(0)(9223372036854775807);
如下:
warning C4146: unary minus operator applied to unsigned type, result still unsigned
如果我将 -9223372036854775808 更改为 -9223372036854775807,警告就会消失。
这里有什么问题?关于我的原始代码,测试通过了。