新しく質問する

{x = x>y ? x:y; return x;}

役に立った:1件
  • 質問者:yosiyosi
  • 投稿日時:2002/01/10 20:14
  • 困り度:困ってます
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

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

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:1件)
  • 参考になった:0件
  • 回答者:yatokesa
  • 回答日時:2002/01/11 09:58

三項演算子と言います

通報する

この回答へのお礼

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

  • 参考になった:0件

No.4ベストアンサー20pt

  • 回答者:madman
  • 回答日時:2002/01/10 23:31

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

通報する

この回答へのお礼

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

  • 参考になった:0件
  • 回答者:hitomura
  • 回答日時:2002/01/10 22:29

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

finalanswerさん、ごめんなさい。

通報する

  • 参考になった:0件

No.2ベストアンサー10pt

  • 回答者:hitomura
  • 回答日時:2002/01/10 22:01

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

…となります。

通報する

この回答へのお礼

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

  • 参考になった:0件
  • 回答者:finalanswer
  • 回答日時:2002/01/10 20:34

「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;

通報する

この回答へのお礼

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

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ

Facebook公式ページ

公式Twitter