- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:int型なのに2バイト分しか値が取得できません。)
int型なのに2バイト分しか値が取得できません
このQ&Aのポイント
- DBに設定されたフィールドから取得した値がint型で受けると、32767を超えた値が0となります。
- 原因はint型が2バイト分しか受け取れないためです。
- 対応策としては、long型で値を受け取ることができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
GetFieldValueは関数オーバーロードにより複数存在するようですが、その中で整数型はint型とlong型それぞれの定義が存在しています。 で、このときintのGetFieldValueはshort相当で動作するのでしょう。 なので対処としては受け側をlongにする事で正しいというか、他に方法はありません。
その他の回答 (1)
- D-Matsu
- ベストアンサー率45% (1080/2394)
回答No.2
あ、あと「なんでこんな実装になってるのか」というのは推測になりますがsizeof(int)は環境依存なのでintが2バイト型の環境を考慮してるんじゃないかと。
質問者
お礼
補足ありがとうございます。
お礼
早い回答ありがとうございます。 2バイトは、もっと前の時代と思っており、なぜ今頃と思っていましたが、理解することが出来ました。