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も見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
INT64対応のprintf系関数はありますか?
C言語・C++・C#
-
C言語 配列の長さの上限
C言語・C++・C#
-
-
4
型について
C言語・C++・C#
-
5
char*を初期化したいのですが
C言語・C++・C#
-
6
C言語のポインタに直接アドレスを割り振りしたい
C言語・C++・C#
-
7
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
8
CloseとDisposeの違い
Visual Basic(VBA)
-
9
バッファとは何ですか
C言語・C++・C#
-
10
画面を強制的に再描画させる方法
C言語・C++・C#
-
11
charでの計算?
C言語・C++・C#
-
12
CWnd::EnableWindow()の扱い方
C言語・C++・C#
-
13
正負を反転させて出力するプログラム
C言語・C++・C#
-
14
C言語におけるif文の評価順
C言語・C++・C#
-
15
C言語の型による処理速度の違い
C言語・C++・C#
-
16
カンマ区切りのデータを配列に読み込みたい
C言語・C++・C#
-
17
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
18
複数桁10進数の*桁目だけを抽出したい
C言語・C++・C#
-
19
変数の前のビックリマークについて!
PHP
-
20
C言語のサフィックスについて
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語で簡単なパックマンゲーム...
-
画像の拡大・縮小
-
OpenGLの惑星プログラム
-
intとlongは同じ?
-
再起呼び出しの回数をカウント...
-
【C#】SQL文の中に変数を埋め込...
-
関数とビット列
-
カメラを用いて動画から画像を...
-
Cプログラムによる画像の高速フ...
-
カードシャッフルのブログラム...
-
3のつく数と3の倍数を表示 C言語
-
whileとifを使い偶数を出すには
-
デバッグビルドとリリースビル...
-
2の補数を計算するプログラム
-
C言語で%を使わない余りの出し方
-
C言語
-
C言語 サイコロ 2つの値を返せない
-
OpenCV輪郭抽出→座標取得でのバ...
-
偶数パリティ
-
迷路を脱出する経路探索プログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
intとlongは同じ?
-
C言語で%を使わない余りの出し方
-
2の補数を計算するプログラム
-
再起呼び出しの回数をカウント...
-
画像の拡大・縮小
-
迷路を脱出する経路探索プログ...
-
分数の足し算をさせるプログラ...
-
OpenCVによる4値化について
-
3のつく数と3の倍数を表示 C言語
-
C言語で簡単なパックマンゲーム...
-
ヌメロンのプログラム
-
C++で表を作成したいのです ...
-
複数の共有メモリの作成
-
カードシャッフルのブログラム...
-
whileとifを使い偶数を出すには
-
関数とビット列
-
【C#】SQL文の中に変数を埋め込...
-
異なるn個の整数からr個の整数...
-
c言語プログラミングについて f...
-
条件が多い場合
おすすめ情報