アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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つの値をこの関数に入れると、大きいほうの値が帰ることになります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/01/12 13:24

三項演算子と言います

    • good
    • 1
この回答へのお礼

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

お礼日時:2002/01/12 13:23

>finalanswerの回答に補足です。


ああ、「さん」が抜けてしまった…

finalanswerさん、ごめんなさい。
    • good
    • 1

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) { …

…となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/01/12 13:24

「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;
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/01/12 13:25

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