
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
型について
C言語・C++・C#
-
C言語 配列の長さの上限
C言語・C++・C#
-
long型の定数の末尾にLを付ける意味
C言語・C++・C#
-
-
4
関数から配列を返すには?
C言語・C++・C#
-
5
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
6
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
7
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
8
INT64対応のprintf系関数はありますか?
C言語・C++・C#
-
9
#if 1 #elseの意味について
C言語・C++・C#
-
10
newしないオブジェクトについて
C言語・C++・C#
-
11
ソースコードの1行が長いときの折り返し
PHP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
再帰処理をループ処理に変換
-
分数の足し算をさせるプログラ...
-
「Aに対するBの割合」と「Aに対...
-
Aの値からBの値を除するとは??
-
2÷3などの余りについて
-
有効数字について 以前質問をし...
-
隣接行列を読み込んで有向グラ...
-
複数桁10進数の*桁目だけを抽出...
-
Enterキーを押されたら次の処理...
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語 エラーの原因がわからな...
-
有効数字(中学1年 東京書籍)
-
変数のスコープ
-
プログラムでの数字につく”f”の...
-
信頼区間の1.96や1.65ってどこ...
-
関数の実体定義にヘッダファイ...
-
正の数aは4の倍数で、7でわると...
-
カノニカルモードの設定について
-
long型の定数の末尾にLを付ける...
-
【C言語】入力された文字種別ご...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語で%を使わない余りの出し方
-
カードシャッフルのブログラム...
-
2の補数を計算するプログラム
-
OpenCVによる4値化について
-
ヒストグラム均等化処理プログラム
-
【C#】SQL文の中に変数を埋め込...
-
再起呼び出しの回数をカウント...
-
intとlongは同じ?
-
C++で表を作成したいのです ...
-
画像の拡大・縮小
-
argvのNULLチェック
-
c言語プログラミングについて f...
-
ヌメロンのプログラム
-
C言語でDOS画面のプログラム(...
-
OpenGLの惑星プログラム
-
opencvとmbedのシリアル通信で...
-
C言語プログラミング 漸化式に...
-
3のつく数と3の倍数を表示 C言語
-
猫でもわかるゲームプログラミ...
-
条件が多い場合
おすすめ情報