• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語について)

C言語のプログラムで三つの整数値の最小値を求める方法

このQ&Aのポイント
  • C言語のプログラムで、条件演算子を使って三つの整数値の最小値を求める方法を紹介します。
  • プログラムの中では、整数値を入力するためにscanf関数を使用し、条件演算子を使って最小値を求めています。
  • もっと簡単な方法としては、配列を使って入力された値を比較し、最小値を求める方法があります。

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

  • ベストアンサー
noname#240995
noname#240995
回答No.5

#include <stdio.h> int main( void ) { int na, nb, nc; printf( "整数1 : " ); scanf( "%d", &na ); printf( "整数2 : " ); scanf( "%d", &nb ); printf( "整数3 : " ); scanf( "%d", &nc ); printf( "最小値は%dです。\n", ( na < nb ? ( na < nc ? na : nc ) : ( nb < nc ? nb : nc ) ) ); return 0; }

hitosashi
質問者

お礼

回答ありがとうございます。

その他の回答 (4)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

条件演算子はCとC++では微妙に仕様が異なります。 今回のコードも、C++ではコンパイルできますが、Cではコンパイルできません。 CとC++を混同しないように注意しましょう。 さて、「もっと簡単に」とのことですが、何をもって簡単かによります。 わかりやすさをいうのであれば、条件演算子を使うこと自体がそもそも間違っています。

hitosashi
質問者

お礼

回答ありがとうございます。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

せめて、コンパイルくらいは自分でやりましょうよ。 コンパイルでエラーになります。 「簡単に」も何も、そもそも間違っています。 演算子には優先順位があります。 (na<nb)?min=na:min=nb; は ( (na<nb)?min=na:min )=nb; と解釈されます。 = nb の左辺「( (na<nb)?min=na:min )」は、代入できる値では無いので、 nbを代入することができません。よってエラーです。 ()で優先順位を変えてください。 もっとも、F ?(X=a) : (X=b) などと、?:の中で代入することは普通しません。 代入等を行うなら、if文で書いた方がはるかにわかりやすい表現だからです。 X= F?a:b ; のように、「条件によって値を選ぶ」ことだけを行います。必要なら、その値を変数に代入するなりします。

hitosashi
質問者

お礼

回答ありがとうございます。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

>(na<nb)?min=na:min=nb; >printf("最小値は%dです。\n",(nc<min)?min=nc:min); これでも間違いではないですが、普通は、 min=na<nb?na:nb; printf("最小値は%dです。\n",nc<min?nc:min); と書きます。 min変数を使わないで1行で書くとしたら、 printf("最小値は%dです。\n",na<nb?na<nc?na:nc:nb<nc?nb:nc);

hitosashi
質問者

お礼

回答ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

これってコンパイルできるんだっけ?

関連するQ&A