• ベストアンサー

{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;}の部分の意味が解りません。

質問者が選んだベストアンサー

  • ベストアンサー
  • madman
  • ベストアンサー率24% (612/2465)
回答No.4

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つの値をこの関数に入れると、大きいほうの値が帰ることになります。

yosiyosi
質問者

お礼

ありがとうございました。

その他の回答 (4)

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.5

三項演算子と言います

yosiyosi
質問者

お礼

ありがとうございました。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.3

>finalanswerの回答に補足です。 ああ、「さん」が抜けてしまった… finalanswerさん、ごめんなさい。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

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) { … …となります。

yosiyosi
質問者

お礼

ありがとうございました。

回答No.1

「x = 条件 ? A : B」という文法は、if-else文の特殊な用法で、 if (条件) {  x = A; } else {  x = B; } と同値です。 したがって、「x = x>y ? x:y; return x;」は、以下の文と同値です。 if (x <= y) {  x = y; } return x;

参考URL:
 
yosiyosi
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう