[英]comparison between signed and unsigned integer expressions warning while make install?
我正在運行下面的代碼,該代碼檢查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";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.