こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

c言語下記のソースの場合、whileの == が1になる条件を教えてください。


  char *abc1 = s1;
  char *abc2 = s2;
  while(*++abc1 == abc2 )

投稿日時 - 2008-07-08 06:45:04

QNo.4159837

困ってます

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

通常では1(真)になることはないでしょうね。左辺はアドレスをインクリメントしたあと、そのアドレスにある値を比較対象にだしているのに対し、右辺は単なるアドレスの値を比較の対象にしてます。

フツーのプログラマーならまずくまないような気がしますがど~なんでしょ?

投稿日時 - 2008-07-08 07:05:06

お礼

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

投稿日時 - 2008-07-08 07:21:51

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

char *s1 = "0";
char *s2 = 0 ;

> 私が勉強している本に書かれているので...
よろしければどの本か教えていただけますか?

投稿日時 - 2008-07-08 12:01:53

ANo.3

普通はこんな書き方をすることはありませんが...

例えば、

char s1[] = { 1, 0, 1 };
char *s2 = NULL;

のような場合だと、whileの条件式は初回のみ真になります。

なお、(C++ではなく)C言語では、整数とポインタを比較しても、警告が出ることはあってもコンパイルエラーにはなりません。

投稿日時 - 2008-07-08 09:41:51

お礼

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

投稿日時 - 2008-07-08 11:11:44

ANo.2

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

投稿日時 - 2008-07-08 09:32:35

お礼

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

投稿日時 - 2008-07-08 11:07:12