我有以下程序。奇怪的是,我期望为零,但程序认为它是 48。如果我调试这个程序,我可以看到分配为 48 的值,但是如果我打印“someVar”的值,它会正确显示为 0。但是如果我转换"someVar" 到 uint16_t,然后一切正常。你能解释一下这个问题吗
#include "boost/cstdint.hpp"
#include <iostream>
#include "boost/lexical_cast.hpp"
using namespace boost;
int main(int argc, char ** args)
{
uint8_t someVar = lexical_cast<uint8_t> (args[1]);
if (someVar > 0)
cout << "greater than zero" << endl;
return 0;
}