
void *memset( void *dest, int c, size_t count );
1文字の扱いはエラーを受け取るために char ではなく
int が使われていることが多いようです。
一般的には1文字の扱いは int であるという習慣が
memset に int が適用されている理由である
と考えられますが、その他に memset に int が使われて
いる大きなメリットは何かあるのでしょうか?
char str1[] = "abcdefghi";
memset( str1, (int)0x41424344, 3 );
//DDDdefghi
int i1[] = { 1, 2, 3, 4, 5 };
memset( i1, (int)0x10204080, 3 );
//0 800000 8000 80, 808080 2 3
No.2ベストアンサー
- 回答日時:
何かへの便宜というよりは、昔の習慣そのままだと思います。
ANSI-C以前では、関数側の引数定義を行っても、実際に引数を渡す際には
shortやcharはintに自動変換して渡していた(スタックに積んでいた)と思います。
つまり、charを定義していても
渡す側の変数char->intにしてスタック->関数側の変数になります。
そのため、shortやcharを引数にする関数は「無駄?」なのかintで
定義しているのかと思います。
同様にfloatもdoubleに変換されていたはずですから、floatを引数にする関数も無かったかと。
ちょっと、理屈としては弱いですが、こんな感じかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
CStringをwchar_tに変換したい
-
'const char *' 型は 'char *' ...
-
atoi( ) の反対をやりたい
-
文字列から空白を取り除きたい...
-
文字コードチェックについて
-
C言語 文字列操作
-
配列をnビットシフトする
-
c++ 文字列を入力して、一文字...
-
C言語のfor文です。 繰り返しの...
-
for文 アスタリスクで形を作る
-
3桁区切(コンマ)記号をつけ...
-
文字列配列のほしい部分だけを...
-
テキストデータをそのままバイ...
-
Win32APIでのエディットボック...
-
配列から指定するデータを取り...
-
C言語 ミリ秒を日付に変換には
-
bitmapをcharで読み込みました。
-
単語を読み取る(c言語)
-
pingの結果を取得する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構造体の各メンバにfor文からア...
-
fgetsなどのときのstdinのバッ...
-
文字列から空白を取り除きたい...
-
C言語のfor文です。 繰り返しの...
-
CStringをwchar_tに変換したい
-
間接参照のレベルが異なっています
-
c++ 文字列を入力して、一文字...
-
C言語の入力した文字を反転させ...
-
charからLPTSTRへの変換方法
-
ネットワークにつながっている...
-
'const char *' 型は 'char *' ...
-
テキストデータをそのままバイ...
-
c言語でユーザ関数を利用して入...
-
atoi( ) の反対をやりたい
-
間接操作のレベルとは
-
-'0'の意味について
-
double型の値をchar配列に変換...
-
Linuxでフォルダ内全ファイル名...
-
配列をnビットシフトする
-
型変換
おすすめ情報