以下のプログラムがあります。奇妙なことに、ゼロを期待していますが、プログラムは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;
}