
Windows2000で、VC++6で型のサイズを調べると、以下のとおりでした。
int 4バイト
long 4バイト
long int 4バイト
環境はWindows2000, CPUはCeleron1200Mhzです。
環境やコンパイラによって型のサイズや呼び方も変わるのでしょうか?
VisualBasic6用のDLLをVCで作成した記憶があるのですが、そのときは
VB6のInteger型が2バイトだったので C(Ver7.0?????)側も2バイトだったと思います。
今VB6のInteger型にあわせる場合はC側ではshortでないとおかしくなるのでしょうか?
私はブランクがあり、そのあたりの事情がよくわかっていません。
あるサイトのページを見ると
intが2バイトで、 long intは同じ4バイトで long long intという型もありました。VC6++では long long intは無いようです。
http://seclan.dll.jp/c99d/c99d05.htm
VC2005++やGCCでは8バイトの型はあるのでしょうか?
No.2ベストアンサー
- 回答日時:
★アドバイス
>VC6++では long long int
↑
『long long』は64ビットの整数型です。
VC++2003.NET や VC++2005 では使えます。
でも C99 を完全にサポートしているわけではありません。
また printf 文でも VC++2003.NET では『%I64d』『%I64u』などを使います。
VC++2005 では『%lld』『%llu』を使います。
・32ビット環境では int 型は 32 ビット(4バイト)です。
他にも
short、unsigned short、signed short は2バイト(16ビット)
long、unsigned long、signed long は4バイト(32ビット)
long long、unsigned long long、signed long long は8バイト(64ビット)
になります。
・それから
『short』と『short int』や
『long』や『long int』は同じ意味です。
単に int を省略できるだけです。
というより省略すると int 型になるのです。
私も普段は long、short と記述しています。
正しくは long int、short int になります。
『long』、『short』は修飾子です。
>VC2005++やGCCでは8バイトの型はあるのでしょうか?
↑
int型に対するバイト数ですか?
32ビット環境では int、unsigned int は4バイトです。
64ビット環境では int、unsigned int が8バイトになります。
・int型以外にもポインタのビット数(バイト)も環境によっていろいろと変ります。
int型が 32 ビットでもポインタだけは 64 ビットだったりもします。
質問にあるリンクを読めばポインタのことも載っているはずです。
場所は忘れましたが…。
>環境やコンパイラによって型のサイズや呼び方も変わるのでしょうか?
↑
環境によって int 型やポインタのサイズは変ります。
コンパイラ(処理系)やコンパイラ・オプションでも変ります。
でも呼び方は変らないと思いますよ。
・以上。下の『参考URL』もどうぞ。
参考URL:http://portable-c.jugem.jp/?eid=12
No.1
- 回答日時:
規格上は
・char 1個が 1バイト
・1 = sizeof(char) ≦ sizeof(short) ≦ sizeof(int) ≦ sizeof(long) (≦ sizeof(long long))
・sizeof(unsigned なんちゃら) = sizeof(signed なんちゃら) = sizeof(なんちゃら)
・CHAR_BIT ≧ 8
・sizeof(short) * CHAR_BIT ≧ 16
・sizeof(long) * CHAR_BIT ≧ 32
・sizeof(long long) * CHAR_BIT ≧ 64
としか決まっていません. だから, 「int が 2バイト」の環境もあれば「int も long も 4バイト」という環境があります.
「long が 1バイト」という環境も理論上存在しうるんだけど, 見たことはありません.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- C言語・C++・C# 100バイトのバイナリファイルを読み込んで別のファイルに書き込みたいのですが、型をどうすればいいのか 1 2022/11/03 17:11
- C言語・C++・C# (C言語)めちゃくちゃな値になってしまいます。 5 2022/08/13 11:55
- 英語 提示文の関係代名詞節の文型の違いによるニュアンスの違いについて 2 2022/12/12 14:54
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでShift-JISのURLエンコード
-
ピクセル,dpiから容量(バイト...
-
Windows 2003 サーバー のファ...
-
windowsのファイルパス最大文字数
-
文字数の限界
-
VB6で漢字の1バイト目か2バイト...
-
glibcをワイド文字=2バイト指定...
-
文字コードの利点、欠点
-
3バイト文字(UTF-8)をprintfで...
-
「1TB」のHDDに日本語は何字入...
-
mov eax, width mov ebx, 3 mul...
-
半角、全角の判別方法
-
Visual Basicでパック10進(2進...
-
UTF-8で5~6バイトになる文字コ...
-
シフトJIS 2バイト字の範囲
-
ビットからバイトへの変換
-
:(コロン)のKeyCode
-
COBOLでハーフバイト数値を読む...
-
pythonでバイナリデータを配列...
-
CHAR_BITについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
エクセルシート名の制限を変更...
-
char str[256]の256の意味は?
-
バイト列とバイナリ列の違いが...
-
ピクセル,dpiから容量(バイト...
-
C++ Builderで文字列をバイトに...
-
Javaで日本語1文字のバイト数
-
ビットスワップとバイトスワッ...
-
SQLで1バイト、2バイト混在...
-
バイナリとBCDコード
-
URLは最高何文字まで可能なので...
-
機種依存文字をチェックしたい。
-
VBAでShift-JISのURLエンコード
-
COBOL PICTUREで X,S,Vの意味
-
memcmp バイナリデータの比較方法
-
pythonでバイナリデータを配列...
-
64bit対応
-
3バイト文字(UTF-8)をprintfで...
おすすめ情報