
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も見ています
-
型について
C言語・C++・C#
-
C言語 配列の長さの上限
C言語・C++・C#
-
関数から配列を返すには?
C言語・C++・C#
-
-
4
初級者の質問――time_tについて
C言語・C++・C#
-
5
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
6
enumについて
C言語・C++・C#
-
7
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
8
newしないオブジェクトについて
C言語・C++・C#
-
9
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
10
long型の定数の末尾にLを付ける意味
C言語・C++・C#
-
11
配列の要素数に変数を入れたいときには
C言語・C++・C#
-
12
#if 1 #elseの意味について
C言語・C++・C#
-
13
C言語でgetchar();が上手く使えずに困っています‼ void input(char *cx,
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語でDOS画面のプログラム(...
-
16bitで乱数を生成する方法
-
ヒストグラム均等化処理プログラム
-
C言語で簡単なパックマンゲーム...
-
プログラミングに関して
-
nCrの計算
-
C言語プログラミング 漸化式に...
-
カレンダークラス
-
C++で表を作成したいのです ...
-
DXライブラリによるパズルゲー...
-
シェアウェアの作り方
-
returnの使い方
-
コマンドプロンプトのウィンド...
-
Pythonで入力した値以外の最大...
-
再起呼び出しの回数をカウント...
-
Visual C++ フレームを中央に表...
-
argvのNULLチェック
-
並列処理プログラム
-
画像の拡大・縮小
-
C++ bmp 透過処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2の補数を計算するプログラム
-
intとlongは同じ?
-
条件が多い場合
-
再起呼び出しの回数をカウント...
-
argvのNULLチェック
-
C言語でDOS画面のプログラム(...
-
カードシャッフルのブログラム...
-
c++ TCHARで文字化け
-
複数の共有メモリの作成
-
C++ Debug Errorについて教えて
-
C++ bmp 透過処理
-
関数とビット列
-
OpenCVによる4値化について
-
コマンドプロンプトのウィンド...
-
ヌメロンのプログラム
-
for 分についてです
-
DXライブラリとC言語 fwrite関...
-
16bitで乱数を生成する方法
-
プログラミングに関して
-
C++で表を作成したいのです ...
おすすめ情報