質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

218閲覧

変数xに異常な値が入る。

cresc

総合スコア14

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/11/18 08:07

###前提・実現したいこと
C言語 ランダム関数を用いて、配列に10個の1~100の値をいれたい。
###発生している問題

10個の1~100の値を配列に入れたいのですが、以下のコードを実行すると xに100000などの大きな数字が入ります。なぜなのでしょうか。

###C

#include <stdio.h> #include <time.h> int main(void){ int i; time_t t; int array[10]; int x; t = time(NULL); srandom(t); for (i = 0; i < 10; i++){ x = random() % 100 + 1;   /*ここに問題がある。*/ array[i] = x; } for (i = 0; i < 10; i++){ printf("%d\n",array[i]); } return (0); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2017/11/18 08:15

random()はC言語の標準ライブラリにはありませんが、OS環境は何でしょうか。
cresc

2017/11/22 15:11

返答がおそくなってしまい大変申し訳ありません。OSはubuntu14です。確かにググってもでてこなかったのですが、学校でrandom()を使ってますが問題なく動いてます。
guest

回答3

0

変数を定義するときに初期値を代入しないとコンパイラによって違う挙動をするみたいです。
今回初期値を代入しなかったので、いったん変数xに適当な巨大な数字をいれるようコンパイラが処理したためこのような結果になりました。
質問してから時間がたっての返信、大変申し訳ありませんでした。><
様々な回答ありがとうございました!

投稿2017/11/22 15:29

cresc

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

#include <stdlib.h>を追加して、srandom => srandrandom => randに変えましょう。

投稿2017/11/18 10:02

Takahito_Ogawa

総合スコア229

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cresc

2017/11/22 15:15

返信が遅くなってしまい、大変申し訳ありません。>< Cのランダム値を生成するモジュールはrand()が一般的みたいですね。 大学ではrandom()を使ってて、こっちでも動くみたいです。 原因が無事に解決しましたので自己解決のところに記述いたします。 回答誠にありがとうございました!
guest

0

ベストアンサー

手元で動かしてみましたが、特に問題ないようです。
コンパイラ等はどのようなものを使っていますか?

※ コメントの前に全角空白が入っていますが、これは質問のために追加したものですよね。

投稿2017/11/18 08:14

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cresc

2017/11/22 15:22

返信が遅くなってしまい、大変申し訳ありません。>< コメントの前の全角空白は質問のためにteratailで追加したものです。 全角空白になってたことが気づきませんでした。ご指摘ありがとうございます! 徳丸さんのおっしゃる通りコンパイラによって挙動が違ったのが原因みたいでした。 回答誠にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問