{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件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.4ベストアンサー20pt
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つの値をこの関数に入れると、大きいほうの値が帰ることになります。
この回答へのお礼
ありがとうございました。
No.2ベストアンサー10pt
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) { …
…となります。
この回答へのお礼
ありがとうございました。
「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;
この回答へのお礼
ありがとうございました。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











