• 締切済み

c言語 等価演算子(==)について

等価演算子(==)は、ポインタの指すオブジェクトが同一あるかないの判定する演算子。  故に下記の例、*sc1 == sc2 は、sc1とsc2の値(オブジェクト)を比較しているのですか教えてください。      char *sc1 = s1; char *sc2 = s2; *++sc1 == sc2;

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

本の記述だ、ということならただの誤植でしょう。そうでないと著者が主張するようならそんな本は燃やしてしまいましょう。

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.3

同じ値かを比較するだけなので異なる型で比較しても常に不一致となり無意味

dreamsmomo
質問者

お礼

回答ありがとうございます。

回答No.2

> 等価演算子(==)は、ポインタの指すオブジェクトが同一あるかないの判定する演算子。 違います。両辺が等しいかを判断します。 > *++sc1 == sc2 左辺はchar/右辺はchar* なので比較に意味がありません。

dreamsmomo
質問者

お礼

回答ありがとうございます。

dreamsmomo
質問者

補足

この比較は、ある本のstrstrに書かれていました。この部分は、間違いでしょうか、

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

> ポインタの指すオブジェクトが同一あるかないの判定する演算子。 ここで既に間違ってます。 等価演算子は「値そのもの」の同一性しか見ません。 で、ポインタ変数を等価演算子で比較した場合、等価演算子の「値」というのはポインタそのもの。 つまり、ポインタ(=アドレス)が同じかどうか、しか見ません。 C++で演算子オーバーロードをしている場合はまた話が違ってきますが、これはCの話ですから無関係。

dreamsmomo
質問者

お礼

回答ありがとうございます。

dreamsmomo
質問者

補足

この比較は、ある本のstrstrに書かれていました。この部分は、間違いでしょうか、

関連するQ&A

専門家に質問してみよう