• ベストアンサー

c言語で==が1になる条件

c言語下記のソースの場合、whileの == が1になる条件を教えてください。   char *abc1 = s1;   char *abc2 = s2;   while(*++abc1 == abc2 )

質問者が選んだベストアンサー

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

通常では1(真)になることはないでしょうね。左辺はアドレスをインクリメントしたあと、そのアドレスにある値を比較対象にだしているのに対し、右辺は単なるアドレスの値を比較の対象にしてます。 フツーのプログラマーならまずくまないような気がしますがど~なんでしょ?

dreamsturb
質問者

お礼

回答ありが御座います。普通は、このような式は、無いとおもいますが、私が勉強している本に書かれているので、疑問なので質問を出しました。

その他の回答 (3)

noname#75489
noname#75489
回答No.4

char *s1 = "0"; char *s2 = 0 ; > 私が勉強している本に書かれているので... よろしければどの本か教えていただけますか?

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

普通はこんな書き方をすることはありませんが... 例えば、 char s1[] = { 1, 0, 1 }; char *s2 = NULL; のような場合だと、whileの条件式は初回のみ真になります。 なお、(C++ではなく)C言語では、整数とポインタを比較しても、警告が出ることはあってもコンパイルエラーにはなりません。

dreamsturb
質問者

お礼

回答ありがとう御座います。コンパイルをしてみます。

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

ポインタとcharを比較しているので、コンパイルエラーではないかと。

dreamsturb
質問者

お礼

回答ありがとう御座います。 ソースでコンパイルしてみます。

関連するQ&A