- ベストアンサー
c言語で==が1になる条件
c言語下記のソースの場合、whileの == が1になる条件を教えてください。 char *abc1 = s1; char *abc2 = s2; while(*++abc1 == abc2 )
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
通常では1(真)になることはないでしょうね。左辺はアドレスをインクリメントしたあと、そのアドレスにある値を比較対象にだしているのに対し、右辺は単なるアドレスの値を比較の対象にしてます。 フツーのプログラマーならまずくまないような気がしますがど~なんでしょ?
その他の回答 (3)
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言語では、整数とポインタを比較しても、警告が出ることはあってもコンパイルエラーにはなりません。
質問者
お礼
回答ありがとう御座います。コンパイルをしてみます。
- titokani
- ベストアンサー率19% (341/1726)
回答No.2
ポインタとcharを比較しているので、コンパイルエラーではないかと。
質問者
お礼
回答ありがとう御座います。 ソースでコンパイルしてみます。
お礼
回答ありが御座います。普通は、このような式は、無いとおもいますが、私が勉強している本に書かれているので、疑問なので質問を出しました。