![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
条件演算子 ”?:”をつかってif分と同じようなことができると知りました。
c = (a>b) ? a : 0 ;
というようにスルのですが、ふと、条件に満たない場合はそのまま、という場合にはどう記述したらいいのかわかりません。ためしに
c = (a>b) ? a : c ;
としてみました。これで正しく動作したのですが、
//(a<=b)のときは
c = c ;
ということになるんですよね。これってなんとなく”無駄”な感じがします。
if文でいうと、"else"を記述しない場合の書き方で、スマートなものはないでしょうか?
No.2ベストアンサー
- 回答日時:
そういう処理を条件演算子で表現するなら
(a>b)?(c=a):0;
あるいはカッコをなくして
a>b?c=a:0;
と書きます。0(ゼロ)でelse句が省略できるのです。
もっともあなたの例のように初期化演算として頭にc=をもってくるなら通用しませんが。
条件演算子(?:)は基本的に多重分岐を扱うものなのであまりelse句なしのものは使いませんが、好みですからどっちでも良いでしょう。if文を使うより文字数が少なく済みますからね。
c=(a>100)?100:(a>10)?10:0;
上記のようにif-else-elseの多重分岐も扱えます。
なるほど!
なんとなく、IFぶんよりもスマートな感じがして好きなんですよ。
ほほう。多重分岐もいけるんですね。
勉強になりました!
No.4
- 回答日時:
ShaneOMac さんがご自身でもおっしゃっていますが、 Java では、
c = (a > b) ? a : c;
のような書き方はできても、
(a > b) ? (c = a) : 0;
のような書き方はできません。
Java では、ひとつの文の中に、代入やメソッド呼び出しなどの「意味のある」動作が含まれている必要があります。
前者は、? : 演算子で値を選択した後、それを変数に代入しています。しかし後者では、ただ単に ? : 演算子で値を選択しているだけです。たとえ文の一部に代入操作が含まれていても、文を全体としてみたときにそれが ? : 演算子による式である以上、有効な文ではないのです。
> if文でいうと、"else"を記述しない場合の書き方で、スマートなものはないでしょうか?
すべてが ? : 演算子ですんでしまうのなら、誰も最初から if 文なんて物を作りません。無理をせず if 文を使えばよいのです。↓
if (a > b) c = a;
無理に「テクニック」を多用しても、後でソースが読みにくくなるだけですし、プログラムの実行速度が返って遅くなることもあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) IFERROR(IF()IF())のような形の構文が作れません 2 2023/02/05 17:51
- Excel(エクセル) マクロ、条件付き書式のfont.color 1 2023/03/28 01:10
- Visual Basic(VBA) VBA エクセル 条件の設定 1 2022/03/28 10:24
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- Excel(エクセル) エクセルの遅刻計算について 3 2023/01/15 13:31
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- 大学受験 【急募】國學院大學数学について質問です。 僕の受ける方式は下線の引いた所(B日程)なのですが、結果の 2 2023/02/20 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 アロー演算子について質...
-
テキストボックスの値を変数に...
-
Variant型で宣言してるのにEmpt...
-
jsp~jspにhiddenを使って変数...
-
プログラミングで変数と関数の...
-
processing エラーで、 "cannot...
-
数値計算??
-
DataTableの値を変数に代入したい
-
ここの答えわかる方いますか? ...
-
IEEE規格で「いちばん近い偶数...
-
i++と++i ってどう違うのですか?
-
[VBS]変数を定数に変換する方法...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
C言語で全角文字を扱いたいので...
-
excelの、ある数式内の{}の意...
-
【エクセル】 関数による電子...
-
エクセルへのデータの貼付時に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
だれがとけるの?
-
jsp~jspにhiddenを使って変数...
-
EXCEL/VBA 変数の値をクリップ...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
processing エラーで、 "cannot...
-
Variant型で宣言してるのにEmpt...
-
整数xxxが大き過ぎますというエ...
-
プログラミングで変数と関数の...
-
C言語 アロー演算子について質...
-
C言語 列挙型(enum型)変数について
-
i++と++i ってどう違うのですか?
-
切り上げ
-
インクリメント演算子の前置(+...
-
VB6.0での条件文にある#の意味
-
親ウィンドウの情報をインライ...
-
C言語 exitで終了した関数の戻...
-
数値計算??
おすすめ情報