mainについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tyutyu

mainについて

#1

投稿記事 by tyutyu » 9年前

include<stdio.h>

int main(void)



include<stdio.h>

int main()


とありますが、どう違うのですか???またvoidをつけなければいけない時はどういう時でしょうか?
参考書に載っていなかったので質問しました。

後、Cの本でソースを同じC++でつくったら、作成できません。

例 Cの場合 main
  C++の場合 int main

box
記事: 1751
登録日時: 9年前

Re: mainについて

#2

投稿記事 by box » 9年前

tyutyu さんが書きました: int main(void)
int main()
とありますが、どう違うのですか???またvoidをつけなければいけない時はどういう時でしょうか?
前者のように、引数の並びとして
void
と書いた場合は、「引数がない」ということを明示する意味があります。

後者の、引数の並びを省略する書き方は、したことがないのでよくわかりません。もしかしたら、CとC++とでは意味が異なるのかもしれません。
tyutyu さんが書きました: 後、Cの本でソースを同じC++でつくったら、作成できません。

例 Cの場合 main
  C++の場合 int main
おっしゃりたいことは何となくわかるんですが、どうもモヤモヤしてしまいますね。
まあ、C++の話は、まだしなくてよいのかも…。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

naohiro19
記事: 256
登録日時: 10年前
住所: 愛知県

Re: mainについて

#3

投稿記事 by naohiro19 » 9年前

C言語の標準規格では

コード:

int main(int argc. char** args){ /* .. */ }

コード:

int main( void ){ /* .. */ }
の2つのみで

コード:

void main(){ /* .. */ }
は規格外です。

アバター
へろりくしょん
記事: 92
登録日時: 10年前
住所: 福岡

Re: mainについて

#4

投稿記事 by へろりくしょん » 9年前

tyutyu さんが書きました:とありますが、どう違うのですか???またvoidをつけなければいけない時はどういう時でしょうか?
参考書に載っていなかったので質問しました。
というより、原則として付けるべき。 だと心得てください。

C言語では hoge(void) と hoge() では意味が異なります。
前者の場合は、引数を取らない事を意味します。
後者の場合は、引数のチェックを行わない事を意味します。

ですので、
void hoge(void)
{
  ・・・
}

void foo()
{
  ・・・
}

main()
{
  hoge(100);  //エラー
  foo(100);   //おk
}

となります。

ちなみに、C++では、仮引数の宣言を省略した場合、それは void を与えた時と同じ意味です。
tyutyu さんが書きました:例 Cの場合 main
  C++の場合 int main
C言語の場合、関数の戻り値の型を省略した場合、標準で int 型であると解釈されます。
C++の場合は省略する事は許されません。

#ところで、コードタグってどうやって使うんでしたっけ。

non
記事: 1097
登録日時: 9年前

Re: mainについて

#5

投稿記事 by non » 9年前

へろりーな さんが書きました:#ところで、コードタグってどうやって使うんでしたっけ。
タグをつけたい範囲をドラッグして選択し、添付図のコード横の三角(赤丸部分)から、
言語を選びます。
もちろん直接
[code=c] と [/code] で囲っても可。([]は半角)
添付ファイル
キャプチャ.PNG
non

アバター
みけCAT
記事: 6309
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: mainについて

#6

投稿記事 by みけCAT » 9年前

トピックの話とはあまり関係なくてすみません。
naohiro19 さんが書きました:C言語の標準規格では

コード:

int main(int argc. char** args){ /* .. */ }

コード:

int main( void ){ /* .. */ }
の2つのみで

コード:

void main(){ /* .. */ }
は規格外です。
とありますが、

コード:

int main(int argc, char* args[]){ /* .. */ }
でもいいですよね?
また、argcとargsの部分も規格なのですか?
自分はよく

コード:

int main(int argc,char* argv[]){ /* .. */ }
のように書いています。
読みやすさは別として、

コード:

int main(int a,char** b){ /* .. */ }
のように適当な変数名だとどうなりますか?
混乱させてしまったらすみません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 1751
登録日時: 9年前

Re: mainについて

#7

投稿記事 by box » 9年前

慣習上
argc(argument countのことと思われ)

argv(argument valueのことと思われ。argsは見たことがない)
を使ってるだけです。

名前はaでもbでも、型さえ合ってればよし。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6309
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: mainについて

#8

投稿記事 by みけCAT » 9年前

なるほど。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る