0

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

1 に答える 1

4

文字ゼロ('0'実際には48であり、整数としての数値ゼロは、明らかに実際にはゼロです)。を作成するlexical_cast<int>と、必要な処理が実行され、args[1]が文字列から整数に変換されます。は文字なのでuint8_t、字句キャストはあなたが求めていることを実行し、文字列の最初の文字を与えると思います。

于 2013-01-30T02:23:46.957 に答える