🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #678

Re: ((a)>(b)?(a):(b))って?

#678
From: Masahiro Kondo
Date: Sun, 08 Mar 1998 00:00
45 lines
2038 bytes
こんにちは、近藤といいます。

S.Takeuchi wrote:
> 
> #define max(a,b)  ((a)>(b)?(a):(b))
> の式がわかりません.
> 
> ((a)>(b)?(a):(b))をどう解釈すればよいのでしょうか?
> 

((a)>(b)?(a):(b))は、「条件演算子」と言います。
機能としては、if文と同様ですが、式として評価されるので、
判定を文のなかに記述する場合に使用します。
#うまく説明が、できないので・・
たとえば、上記の演算であれば、
------------>
if((a) > (b))
    (a) ; <== ifの結果が、真((a) > (b))の時、((a)>(b)?(a):(b))の値は、
(a)になる。
}else{
    (b) ; <== ifの結果が、偽((a) <= (b))の時、((a)>(b)?(a):(b))の値
は、(b)になる。
}
<------------
ということになります。
したがって、
------------>
 err= func( ) ;
 printf("func("処理は、%s終了しました。\n", (err==0)?"正常":"異常" ) ;
/*
 func()のリターン値で、以下の出力を切り替える。
  errが、0の時->  "処理は、正常終了しました。"
  errが、0以外の時->"処理は、異常終了しました。"
*/
<------------
なんて出来ます。

#私はマクロ以外では、あまり使いません。
# if文のほうが分かりやすいですから。

/***************************************
      Masahiro Kondo (近藤 正博)
       mako@mail.raidway.or.jp
***************************************/
Technical Details
Message-ID: <3502459C.ED6DE1F3@mail.raidway.or.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <19980305004802tokyoweb@anet.ne.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 106434,d151a044f77db8ab
X-Google-Attributes: gid106434,public
From: Masahiro Kondo <mako@mail.raidway.or.jp>
Subject: Re: ((a)>(b)?(a):(b))って?
Date: 1998/03/08
Message-ID: <3502459C.ED6DE1F3@mail.raidway.or.jp>
X-Deja-AN: 331899449
Content-Transfer-Encoding: 7bit
References: <19980305004802tokyoweb@anet.ne.jp>
Mime-Version: 1.0
To: "S.Takeuchi" <tokyoweb@anet.ne.jp>
Content-Type: text/plain; charset=iso-2022-jp
Organization: raidway.or.jp Raid Digital Systems site
Newsgroups: fj.lang.c