No.3
- 回答日時:
C の話なら C のカテゴリにいくべきだと思うが.
「バイト数」が決まっている型は char (とその符号付き/符号なしバージョン) のみで, その「バイト数」は必ず 1 です. もちろん char系の配列もその要素数から「バイト数」が決まりますが, それ以外のすべての型の「バイト数」は処理系に依存します. ビット数は下限が決まっていて
・char: 8ビット以上
・short int: 16ビット以上
・long int: 32ビット以上
・long long int: 64ビット以上
です (int は「short int 以上 long int 以下」).
これを念頭に置いて決めるのが本当.
ちなみにとても嫌なことですが「long int が 4バイト以上」とも決まっていないです.
残りですが, まず「動的配列」とはどのようなものをイメージしているのでしょうか? 要素数が可変であればいい? それとも動的にメモリを割り当てる?
あと, 配列の要素数を返す「関数」は C の範囲では書くことができません. 配列を関数に渡そうとしてもポインタに自動的に変換されてしまい, この時点で「要素数」の情報が落ちてしまいます. でしょうがないので, 「配列全体のバイト数」を「1個の要素のバイト数」で割る, と. C++ なら書けるんだけどね.
No.2ベストアンサー
- 回答日時:
Intってのは、int
LongIntてのは、long
のことですか?
とりあえず、そうだとして、
C言語では移植性というのを大事にします。
intは、サイズは4バイトと決まっているわけではないです。intはその環境で一番扱いやすい大きさというのことになっていて、32bitマシンだとそれがたまたま4バイトになっているということです。
longは必ず4バイト以上ってことは決まっていますが、これも4バイト以上のもっと大きい場合もありえます。(8バイトとか)
そうですね。私の意見を言えば、基本的に、long、short は使ってはいけません。
Cの組み込み型で使っていいのは、char(ただし文字の格納以外の用途には使わない)、int、unsigned intの3種類だけです。
intですむところはintを使いましょう。(サイズがあまり気にならないところ)
で、必ず、4バイトのサイズがほしいところなんかでは、longの代わりに、int32_t、uint32_tを使いましょう。
皆さん、早速の回答有り難う御座います。
Cは色々と処理系に依存する部分があると書いていましたが、そういうことですか。
有り難う御座いました。
ところで再度の質問になるのですが、Cの場合は動的配列の宣言は出来るのですか、それと今ググっているのですが、
配列の要素数を返す関数ってどうかくのでしょうか。
あつかましいお願いかもしれませんが、宜しくお願いします。
No.1
- 回答日時:
単純なint形はプラットフォーム依存で4バイトになったり2バイトになったりします。
32bitの環境ではおっしゃる様に4バイトですが、16bitの環境では2バイトになってしまうという事です。
単純に値だけの参照を行うコードを書く分には問題は発生しませんが、ポインタ参照などで例えば4バイトを前提にアドレスの増減を行って書き換えや参照を行うと、バグの原因になります。
long intという定義は、どのプラットフォームでも*明確*に4バイトを定義します。対してshort intという定義もあり、こちらは2バイトです。
つまり、32bitプラットフォームに依存するコードであれば、intでもlong intでも同じです。お好きな方で書いてください。
プラットフォーム依存を無くしたい場合は、明確にする為にも単なるint定義は止めた方が良いでしょう。
サイズ(バイト数)が気になる場合は、sizeof()を利用してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# アセンブラ指令 3 2023/06/17 14:47
- C言語・C++・C# Pythonについて 2 2022/10/28 11:15
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- WordPress(ワードプレス) wordpressでphpを読み込みたい 1 2022/10/30 23:40
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# C言語 ポインタ 配列 2 2022/06/02 17:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
授業の内容なのですがほんとに...
-
情シスに異動するには。 非情シ...
-
情報の問題です。 サンプリング...
-
ヤフーメールの設定のなかに、...
-
中華ゲーム機のGame Console R3...
-
スクリープロットの見方。この...
-
ソフトが安定版かどうかを知る...
-
ソフトは安定版しか使うべきで...
-
PowerShellの使い方を学ぶのに...
-
ファイル構造が破損しているフ...
-
ソフトはVectorでダウンロード...
-
ストレージにお金をかけれるな...
-
2002年製のpcと2008製のpcがあ...
-
ソフトに致命的なバグがあるか...
-
Microsoftが非推奨にしてるかど...
-
Check Diskは定期的に実行した...
-
ファイルは何で構成されている...
-
SSDを定期的にデフラグした方が...
-
インストールが必要なソフトと...
-
マウスのカーソルは飛ぶ事があ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
使用中のセクタが不良セクタに...
-
ファイル構造が破損しているフ...
-
すみません!パソコン開いて電...
-
現在と現在から20年前の2003〜2...
-
2つのファイルのバイナリをコン...
-
SSDを定期的にデフラグした方が...
-
どのストレージが一番高い所か...
-
AzureとOneDriveって何が違うの...
-
SSDに不良セクタがあるかどうか...
-
S.M.A.R.T.を見るのに1番有名な...
-
SSDに不良セクタが発生したら、...
-
次は、どこのメーカーのPCを買...
-
このパソコンは重量が689gと非...
-
ストレージの中に破損している...
-
SSDのデータがビット落ちにより...
-
SSDにTRIMをしたいのですがSSD...
-
コマンドプロンプトって「cmd」と...
-
SSDの不良セクタを代替セクタに...
-
SSDにTRIMってした方が良いので...
-
ファイルを記録してあるセクタ...
おすすめ情報