アプリ版:「スタンプのみでお礼する」機能のリリースについて

すみません、独学でC言語を学んでいるものです。
どうかお助けいただけませんか?

テキストに載っているものをそのままコンパイラしているのに
エラーがでました。どこがいけないのか確認していただけませんか?

*Memopad.cppで作ったプログラム*

#include<stdio.h>
void main(void)
{
int a,b,c;
a=0;
b=0;
c=0;

if((a=1)||(b=2)||(c=3))
{
printf("%d\n",a);
printf("%d\n",b);
printf("%d\n",c);
}
}

*エラーメッセージ*
添付を参照下さい。


うまくいくと
1
0
0
と表示されるようです。ずっと考えてもわからなかったのでお力を貸して頂ければ助かります。
よろしくお願いします。

「条件演算子論理ORについて」の質問画像

A 回答 (2件)

ちゃんとエラーメッセージを読みましょう。


Possibly Incorrect Assignment
とありますね。
意味は「たぶん、変数の代入が変です」ということです。Warningが出ている行番号も確認してみましょう。
errorではなくWarningというところがミソです。このままコンパイルは通り、実行ファイルはできているはずです。

Cの条件判断の時に引っかかりやすいところなのです。

Cでの条件の書き方をもう一度復習してみてください。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
警告だったんですね。
そして実行してみたところ ちゃんと 0 1 1 とでました。
一番早く回答して頂いたsuzukikun様へベストアンサーにさせて頂きます

お礼日時:2012/08/24 17:20

行番号がどこか…というのくらいは書かれた方が……



ついでに言うと、「エラー」ではなく「警告」です。

>if((a=1)||(b=2)||(c=3))

で、比較ではなく代入しているけど意図通りか?
という警告でしょう。

>うまくいくと

最初のa=1が実行され、式の評価が真になるので、続くb=2とc=3は実行されない。
その為、
>1
>0
>0
>と表示されるようです。
となります。
    • good
    • 0
この回答へのお礼

ご親切な説明どうもありがとうございました。
未だに代入と==を間違えて考えてしまうときがあります。
ひたすら勉強を続けます。
このたびはご回答ありがとうございました。

お礼日時:2012/08/24 17:22

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