• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:int型なのに2バイト分しか値が取得できません。)

int型なのに2バイト分しか値が取得できません

このQ&Aのポイント
  • DBに設定されたフィールドから取得した値がint型で受けると、32767を超えた値が0となります。
  • 原因はint型が2バイト分しか受け取れないためです。
  • 対応策としては、long型で値を受け取ることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

GetFieldValueは関数オーバーロードにより複数存在するようですが、その中で整数型はint型とlong型それぞれの定義が存在しています。 で、このときintのGetFieldValueはshort相当で動作するのでしょう。 なので対処としては受け側をlongにする事で正しいというか、他に方法はありません。

参考URL:
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/win.102/B25252-01/cpp00237.htm
kyororo06
質問者

お礼

早い回答ありがとうございます。 2バイトは、もっと前の時代と思っており、なぜ今頃と思っていましたが、理解することが出来ました。

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

あ、あと「なんでこんな実装になってるのか」というのは推測になりますがsizeof(int)は環境依存なのでintが2バイト型の環境を考慮してるんじゃないかと。

kyororo06
質問者

お礼

補足ありがとうございます。

関連するQ&A