gpt4 book ai didi

c++ - 安装时有符号和无符号整数表达式警告之间的比较?

转载 作者:行者123 更新时间:2023-11-28 06:44:20 25 4
gpt4 key购买 nike

我正在运行下面的代码来检查 data_timestamp 是否超过两周。如果超过两周,则打印 hello 否则打印 world

#include <boost/chrono/chrono.hpp>
#include <iostream>

int main()
{
uint64_t data_timestamp = 1406066507000;

const boost::chrono::system_clock::time_point now = boost::chrono::system_clock::now();
boost::chrono::hours twoWeeks = boost::chrono::hours(24 * 14);
boost::chrono::system_clock::time_point lastTwoWeeks = now - twoWeeks;

boost::int_least64_t millis = boost::chrono::duration_cast<boost::chrono::milliseconds>(lastTwoWeeks.time_since_epoch()).count();

std::cout << "Time stamp in milliseconds since UNIX epoch start: "<< millis << std::endl;

if (data_timestamp < millis) {
std::cout << "Hello";
} else {
std::cout << "World";
}

return 0;
}

我上面的代码工作正常,但是在这个 if 语句比较中有一个警告 -

if (data_timestamp < millis) {

我看到的警告是 -

warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

如何删除此警告?我想将 data_timestamp 保留为 uint64_t,因为在实际代码中它也像在其他地方一样使用。

最佳答案

您可以将 millis 转换为 uint64_t。您遇到的问题是 millis 已签名,因此您可以通过将其转换为无符号类型来修复它。

if (data_timestamp < (uint64_t)millis) {
std::cout << "Hello";
} else {
std::cout << "World";
}

关于c++ - 安装时有符号和无符号整数表达式警告之间的比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com