- ベストアンサー
{x = x>y ? x:y; return x;}
#include <iostream> using namespace std; inline int max(int x, int y){x = x>y ? x:y; return x;} int main() { int num1, num2, ans; cout << "2つの整数を入力して。\n"; cin >> num1 >> num2; ans = max(num1, num2); cout << "最大値は" << ans << "です。\n"; return 0; } の{x = x>y ? x:y; return x;}の部分の意味が解りません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
inline int max(int x, int y){x = x>y ? x:y; return x;} これを普通に関数で書くと int max(int x, int y) { x = x>y ? x:y; return x; } です。 x = 部分は右辺の結果が代入されます。これはわかりますよね。 x>y?x:y; と書くと?より左にある条件式を判定し、その結果が真である場合は:で区切られた左側の値を、偽である場合は右の値を帰します。 x>yが真であればxを、偽であればyを返します。 それが、左辺値xに代入され、関数の戻り値として帰ります。 従って、2つの値をこの関数に入れると、大きいほうの値が帰ることになります。
その他の回答 (4)
- yatokesa
- ベストアンサー率40% (201/496)
三項演算子と言います
お礼
ありがとうございました。
- hitomura
- ベストアンサー率48% (325/664)
>finalanswerの回答に補足です。 ああ、「さん」が抜けてしまった… finalanswerさん、ごめんなさい。
- hitomura
- ベストアンサー率48% (325/664)
finalanswerの回答に補足です。 >したがって、「x = x>y ? x:y; return x;」は、以下の文と同値です。 >if (x <= y) { > x = y; >} というのは、間を一段階抜かして書いてあります。 省略せずに書くと、… …以下の文と同値です。 if ( x > y ){ x = x; }else{ x = y; } return x; しかし、最初の複文の中では何もやっていないので、この部分を省略し、 if (x <= y) { … …となります。
お礼
ありがとうございました。
- finalanswer
- ベストアンサー率60% (182/303)
お礼
ありがとうございました。