
No.1ベストアンサー
- 回答日時:
long は 32ビットの整数(signedの場合 -2147483648~+2147483647、unsignedの場合
0~4294967295)
int は システムにおける 標準
という定義です。
32ビットシステムの場合は同じになります。
DOS時代はシステムが 16ビットのため、intは -32768~+32767(または 0~65535)でした。
short int とすることで 16ビット互換となります。
この回答への補足
なるほど。
CPUのbit数に依存するのですか。
しかし、新たに疑問が生まれてしましました。
> 32ビットシステムの場合は同じになります。
CPU は i7 2600K
OS は Win7 64bit
を利用しています。
Intel® CoreTM i7-2600K Processor (8M Cache, up to 3.80 GHz)
http://ark.intel.com/products/52214/Intel-Core-i …
ここを見るかぎり64bitCPUなので、
intは64bit分となると思いました。
しかし、VC++ 2010コンパイラでx64としてコンパイルしても
intは64bit分(8バイト分)とらず、
2147483647
2147483647
と出力されました。
なぜなのでしょうか。
64bit CPU / 64bit OSでもintは32bitが上限なのでしょうか。
今後128bit OSや128bit CPUが出てきた時もintは32bitが上限となるのでしょうか。
No.4
- 回答日時:
たまたま両者がそういう環境だったから。
int: 少なくとも-32767~32767の整数が扱える。
long: 少なくとも-2147483647~2147483647の整数が扱える。
扱える値の範囲が long >= int
上記の条件さえみたせばC(C99)としては問題ありませんので。
ちなみにLONG_MAXを出力するなら
>printf("%d\n%d", INT_MAX, LONG_MAX);
のフォーマットは不適切です。
この回答への補足
> ちなみにLONG_MAXを出力するなら
> >printf("%d\n%d", INT_MAX, LONG_MAX);
> のフォーマットは不適切です。
たしかにその通りです。
printf("%d\n%ld", INT_MAX, LONG_MAX);
とすべきでした。
No.3
- 回答日時:
int型はコンパイラによって、ビット長が変わります。
基本的にCPUのビット数がint型のビット長となります。
16ビット以下のシステムでは、int型は暗黙の了解で16ビットとなるものが多いです。
16ビット型の整数として使いたい場合は、short型を使用してください。
int型のサイズが知りたい場合は、INT_MAXを使うか、sizeof関数を使用してください。
この回答への補足
> 基本的にCPUのビット数がint型のビット長となります。
No.1 / No.2 さんへの補足と被りますが、
64bit CPUであれば64bit = 8バイト
128bit CPUであれば128bit = 16バイト
となるのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミングペーパーテスト 次の問題の実行結果を答えろ #include int x[ ] = { 1 2022/06/16 21:49
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングの授業のペーパーテスト 実行結果を答えろ #include int x[ ] = {1 3 2022/06/16 20:08
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数とビット列
-
再起呼び出しの回数をカウント...
-
迷路を脱出する経路探索プログ...
-
組織的ディザ法のプログラムが...
-
再帰処理をループ処理に変換
-
最大の四角形を求めるプログラム
-
プログラムに詳しい方お願いします
-
OPEN
-
C言語のプログラムについて(...
-
カードシャッフルのブログラム...
-
argvのNULLチェック
-
DirectXの表示について
-
intとlongは同じ?
-
C++MFCで変数の値が上書きされ...
-
プログラミングに関して
-
複数の共有メモリの作成
-
C言語で%を使わない余りの出し方
-
C言語でテーブル引きしたら速度...
-
C言語の問題
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
条件が多い場合
-
再起呼び出しの回数をカウント...
-
argvのNULLチェック
-
C言語でDOS画面のプログラム(...
-
カードシャッフルのブログラム...
-
c++ TCHARで文字化け
-
複数の共有メモリの作成
-
C++ Debug Errorについて教えて
-
C++ bmp 透過処理
-
関数とビット列
-
OpenCVによる4値化について
-
コマンドプロンプトのウィンド...
-
ヌメロンのプログラム
-
for 分についてです
-
DXライブラリとC言語 fwrite関...
-
16bitで乱数を生成する方法
-
プログラミングに関して
-
C++で表を作成したいのです ...
おすすめ情報