- ベストアンサー
C言語では0は・・・
C言語では0をif文などで判定するときに 負の値になったら・・・という問題のときに 0は負の値に入るんでしょうか? それとも単純に-1とやるべきなのでしょうか コンパイルするとif(a<0)などでは0はもちろん含まないのですが -1にすると負の値として扱っているように見えるのですが、実際のところどうなんでしょうか もし負の値を入力されたら、というときに-1でいいのか0なのか。 ご回答お待ちしております
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (9)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.10
- 正親町(@Ohgimachi)
- ベストアンサー率43% (110/252)
回答No.8
- shin_nosuk
- ベストアンサー率70% (31/44)
回答No.7
noname#208507
回答No.6
- Hayashi_Trek
- ベストアンサー率44% (366/818)
回答No.5
- hidebun
- ベストアンサー率50% (92/181)
回答No.4
- Yune-Kichi
- ベストアンサー率74% (465/626)
回答No.3
- koujikuu
- ベストアンサー率43% (429/993)
回答No.2
- TooManyBugs
- ベストアンサー率27% (1472/5321)
回答No.1
補足
一応No.9さんをベストアンサーにしておきたいと思いますが エキスパートの人用にコードを書いておきます 昔のファイルから引っこ抜いてきたので間違ってるかもしれません・・・ ****問題**** main()関数で10個のintの要素を持つ配列xを宣言する。 x[9]には-1を入れておく。 配列xにはforループを用いて、scanfで最大9個の値を読み込む。 (すなわちx[9]には決して値を入れない。) ただし、負の値が入力されたら、その値(負の値)を 配列xに入れて、ループを終了し、関数kosuu()を呼ぶ。 関数kosuu()には引数としてxを渡す。 関数kosuu()は、与えられた配列に負の値が現れるまでに、何個 の要素があったかを返す関数である。 たとえば、3 4 1 -1であれば、3個あるとしてとして3を返す。 main()関数では、関数kosuu()から返された値を画面に出力する。 #include <stdio.h> int kosuu(int []); int main() { int x[10],a; x[9] = -1; for(a=0;a<9;a++){ scanf("%d",&x[a]); if(x[a]<-1){ x[0]=x[a]; break; } } kosuu(x); return 0; } int kosuu(int x[]) { int b=0; int c; for(c=0;c<9;c++){ } if(x[c]>0){ b = b+1; } printf("%d\n",b); return b; }