Re: 関数の戻り値の論理が逆になっている点
森山です。
質問しておきながら、中々時間が取れなくて返事が遅れて
しまいました。どうもすみません。
On Fri, 23 Jul 2004 01:06:12 GMT
KIMURA Shigenobu <skimu@mac.com> wrote:
> C には予約語はあって予約関数というのはないです.
すみません、これは私の間違いで予約語の事です。
> C で書く時は C の作法で考えるように頭を切替える
> のがいいと思います.
どうも、そうするしかなさそうですね。
# 何か間違いにくい記述方法が有るのかも知れないと考え
# 投稿しました。
On 23 Jul 2004 09:18:08 GMT
yas@is.tsukuba.ac.jp (Yasushi Shinjo) wrote:
> C言語では、ポインタが0になるということはあり得ないとしてプ
> ログラムを作ることが多いです。ですから、ポインタを返すような
> 関数では、失敗した時に0を返します。
あ!、そおゆう事なんですね...気が付かなかった...
> 値がポインタではない時には、論理演算と同じで、正解が0以外、
> 失敗が0というのも、すぐ思いつきます。たとえば、こんな感じ。
>
> if( isalpha(c) && islower(c) )
> {
> printf("アルファベットでかつ小文字です。");
> }
>
> 少し紛らわしいのが、strcmp() かなあ。あれは、結果を == とか
> < とか > で比較できるので、その部分を見るようにして、
> if( strcmp(s,"ok") == 0 )
> のように、== 0 を書きます。
>
> あと、(Unixの) システムコール系は、失敗すると -1 で、成功す
> ると正の数という風になっているのも多いです。
細かい説明ありがとうございます。
> 工夫するなら、マクロか何か書いて、こうする手もあります。
>
> #define iserror(res) (res)
> res = functionName ();
> if ( iserror(res) ) {
> エラー処理
> } else {
> 通常処理
> }
参考にしてみます。どうもみなさんありがとうございました。
K.Moriyama
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735