重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

C言語strchrkのc=(char)c の キャスト前と後のcの意味を教えてください。

A 回答 (5件)

No.1です。


別の質問で同じ内容について詳しく回答されているのでそちらのURLを記載しておきます。

参考URL:http://okwave.jp/qa4151525.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考URLは、大変参考になりました。

お礼日時:2009/01/01 18:55

> c = (char)c;の左辺値のCの値は、1バイトで型は、


> intですか、

すみません。意味がわかりません。
Cというのはどこから出てきたのでしょうか?
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。
Cは、左辺値の小文字cでint でした

お礼日時:2009/01/01 19:00

strchrの実装における



char *strchr(const char *s, int c)
{
 c = (char)c;
 ...
}

のことだと勝手に解釈して回答します。
JIS X3010:2003の7.21.5.2 strchr関数から引用すると...

機能 strchr関数は, sが指す文字列の中で, c(char型に型変換する。)が最初に現れる位置を捜す。

とありますので、使用どおりcをcharに型変換しているということです。
cの値が0~SCHAR_MAXの範囲に収まっていなかった場合、unsigned charに型変換したり、0xffとのANDを取ったのでは仕様を満たすことができません。

この回答への補足

回答ありがとう御座います。 c = (char)c;の左辺値のCの値は、1バイトで型は、
intですか、

 

補足日時:2008/07/06 22:44
    • good
    • 0
この回答へのお礼

回答ありがとう御座います、今後も回答をお願いいます。

お礼日時:2008/07/06 23:01

strchrの検索文字がcharサイズで扱えない時に備えての処理だと思います。


cがintの場合・・・処理系依存(たぶん下と同じ)
cがunsigned intの場合・・・charのサイズ(1バイト)だけ切り出し

# 僕ならc&=0xff; と書きそう。。

この回答への補足

アドバイスありがとう御座います。キャスト後Cで切り出しし、わかりましたが、
左辺値Cの値は、char(1バイト)で、型intで文字列の文字の比較のためですか

補足日時:2008/07/06 05:56
    • good
    • 0
この回答へのお礼

回答ありがとう御座います、今後も回答をお願いいます。

お礼日時:2008/07/06 23:00

関数は、strchr()ではなく、strchrk()ですか?



それと、
>c=(char)c の キャスト前と後のcの意味を教えてください。
cは変数ですよね?
であればcの型や、strchrk()(strchr()?)の使用されている前後についてもソースを記述してください。

この回答への補足

アドバイスありがとう御座います。関数は、strchrです、strchrのソースは、下記に書きました。
 char *strch(const char *s,int c)
 {
  c=(char)c;
   do
    if(*s==c)

補足日時:2008/07/06 22:22
    • good
    • 0
この回答へのお礼

回答ありがとう御座います、今後も回答をお願いいます。

お礼日時:2008/07/06 22:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!