電子書籍の厳選無料作品が豊富!

y = true;
x+=y ? 1:0

上記の式では、
ハテナ(このようなifのステートメントの名称が分かりませんが)
から、計算しますか?

A 回答 (2件)

NO.1です


再度コンパイルしたら普通にできました
上記の式で合っていたようです
四行目の
>のように使います
以下は間違いでした

//数式
x+= (y ? 1:0);

// 1回目
x+= (true)? 1: 0;

//2回目
x+= 1

//3回目
x = x + 1
の順で正しいと思います
    • good
    • 0

それは条件演算子(三項演算子)と呼ばれるものです


http://www.javadrive.jp/start/ope/index13.html

 =【真偽値式】?【真の場合に評価する式】:【偽の場合に評価する式】
のように使います


yがboolean型でtrueを代入していますが、

boolean型に何かを足す事はないと思います



int x=0;


boolean y=true;

x= y ? 1:0;



であれば、yは trueになるため

xに1が代入される結果になると思います

?から計算と言うより
x+=y ? 1:0だと

x+=y部分が==や!=でないためコンパイルエラーが出ます


 =【真偽値式】?【真の場合に評価する式】:【偽の場合に評価する式】
の 【真偽値式】部分にはboolean型の変数かif()の()内に入るような条件式を入れるべきであり
そこにx+=yを入れるべきではないと思います
    • good
    • 1
この回答へのお礼

ありがとうございます。

混乱しやすいので、
()を使えばいいのですかね?

//数式
x+= (y ? 1:0);

// 1回目
x+= (true)? 1: 0;

//2回目
x+= 1

//3回目
x = x + 1

お礼日時:2016/09/11 21:32

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