質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

3回答

1002閲覧

if文のコードについて解説をお願いできないでしょうか。

BSS_sapporo

総合スコア44

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

0クリップ

投稿2016/04/13 08:30

以下のコードについて、出力される値が「false」となる理由がわかりません。
独学で学んでおり、初歩的な質問で申し訳ないのですが、解説をお願いできますでしょうか。

  1. classTest{

  2. public static void main(String[] args) {

  3. boolean b = true;
  4. if (b = false)
  5. System.out.println(b);
  6. System.out.println(b);
  7. }

  8. }

自身では3行目で「b = true」と定義されているため、5行目の処理は行われず、6行目の処理が行われ「true」が出力されるのではと考えたのですが、間違えているようでした。
間違えているポイントと正しい認識をご教授頂けると助かります。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

比較するなら「b == false」です。

投稿2016/04/13 08:34

編集2016/04/13 08:35
matplus

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BSS_sapporo

2016/04/13 08:38

早速ご回答頂きましてありがとうございます。 では4行目のifでは b に false を代入しているということでしょうか? 知識不足で申し訳ありません。
matplus

2016/04/13 08:44

「b = false」なので、bにfalseを代入してしまっています。 そして、代入したfalseでif文の条件がtrueにならずに直後のSystem.out.println()は実行されず、その次の行のSystem.out.println()が実行されているはず(1つしか出ないはず)です。
BSS_sapporo

2016/04/14 04:36

if文でtrueにならない=直後の処理は実行されないということですね! ご解説がすごくわかりやすくて本当に助かります。 再度のご回答ありがとうございました!
guest

0

ベストアンサー

javaの前提で。

java

1if ( b = false ) {

まずbにfalseを代入してます。
そのうえでif文がbの値を評価しているので

java

1if ( false ) {

と書いてるのと同義になります。

投稿2016/04/13 08:41

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BSS_sapporo

2016/04/13 08:48

わかりやすくご解説いただいてありがとうございます。 if文=条件分岐という認識しかなかったのですが、代入が行われることもあると初めて認識しました! 学んでいる言語はご想像の通りjavaです。記載をもらしてしまい、申し訳ありませんでした。
guest

0

if(b=false)

になっている比較ではなくbにfalseを代入しています
ですから出力されるのはfalseです

比較するためには

if(b==false)

としましょう

※ところで言語はJavaでしょうか?

追記
ifの結果はbにもともと入っていたtrueとfalseが異なるから
一つ目の出力がされないのではなく、
bに代入されたfalseを評価した結果として出力がされていません。

投稿2016/04/13 08:38

編集2016/04/13 08:44
kutsulog

総合スコア985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BSS_sapporo

2016/04/13 08:57

ご回答ありがとうございます。 独学のためか、追記していただいた部分の理解ができないのですが、 4. if (b = false) 5.  System.out.println(b); 6.  System.out.println(b); の部分では5行目の出力は行われてないという認識で良いのでしょうか。
kutsulog

2016/04/14 04:41 編集

代入が行われて比較されていないので ifの評価はfalseを代入されたbが対象になります ifの条件が常にfalseのため1回しかSystem.out.println(b)が動いていないので 1回しか出力されないはずです 2回出力されますか?
BSS_sapporo

2016/04/14 04:33

ご指摘の通り1回のみ出力されています。 条件式がない(trueにならない)ことでif文としての処理はされないということなのですね! やっと理解できました。 何度もご回答いただきましてありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問