c++言語でvoidをよく使うのですがよく意味がわかりません。
voidは値を返す?返さない?と聞きますが意味がわかりません。
どなたか教えてください!!
あと、乱数生成する際にメルセンヌ・ツイスタを使用するのですが、
その時に
init_genrand((unsigned)time(NULL))
と書くのですが、unsignedとNULLの意味がよくわかりません。
こちらもどなたか教えてください。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
関数定義の関数名の前に出てくるvoid
は値を返さないと言うことです。
(unsigned)
とNULL
は困りましたね。逆に何がわかるのでしょう?
変数や値に型があるというのはわかりますか?関数の引数に型があるのはわかりますか?
ポインタはどの程度理解していますか?
投稿2015/01/08 13:20
総合スコア84529
0
ベストアンサー
C使いではありませんが、基本的な所だけ。
voidは通常、戻り値の無い関数に利用します。
イレギュラーな使い方もありますが、それはそれで調べてみると面白いかも知れませんね。
void functionName(){}
int functionName(){}
の様な関数定義がありますが、最初につくvoidやintは戻り値の型宣言です。
つまり、void(無)が宣言されている場合、戻り値は無いのが普通です。
init_genrand((unsigned)time(NULL))については、
「init_genrand」が乱数生成の関数で、「(unsigned)time(NULL)」がseed値(※1)と言われるものです。
「(unsigned)」については、unsigned int(※2)への型変換だと思われます。
通常はunsigned intと記載すると思いますが、省略する事も可能なようですね。
場合によっては環境依存になりそうなので、あまりお勧めできる書き方ではない気がしますが。
「time(NULL)」については、単に時刻を取得しているだけだと思います。
「NULL」とは、プログラム上での「何もない」状態を表します。
これをtime関数の引数に入れる事で、現在時刻が取れる様ですね。
この戻り値が大きい数値の為、(unsigned)でキャストしているものと思われます。
※1、seed値とは
コンピュータは厳密に言えばランダムな値を生成する事は出来ません。
この為、毎回違う値を得る為の、基準になる数値を規定する必要があります。
これがseed値と言われるものです。
なので、ここで使う乱数が非常に頻繁に、且つ並列に利用される様な場合には、seed値には時刻だけを入れるべきではありません。
何故なら、同じseed値で生成された乱数発生器は、同じ値を生成してしまうからです。
※2、unsined intとは
コンピュータ上で扱う数値は通常、+と-を扱う為に、先頭に符号桁を持っています。
この符号桁を使わず、数値としての枠として扱うのがunsined系の型です。
メリットとしては、利用できるbit数が増える為、整数値として扱える桁数が増えます。
以上、ご参考になれば幸いです。
投稿2015/01/08 13:13
総合スコア384
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/01/08 14:38
2015/01/08 16:38
2015/01/08 17:57
2015/01/08 23:12
2015/01/09 01:58