UNIX windows98でC言語をプログラムしました。

#include<stdio.h>
void main()
{
int val;
val=5;
printf("今、変数の中身は、 %dです¥n”, val);
val=val+1;
printf(”今、変数の中身は、 %dです¥n", val);
 val=val++;
printf("今、変数の中身は、 %dです¥n”,  val);

}
をファイル名 aaaとして
gcc aaa.c でコンパイルしたところ、
aaa.c: In function 'main':
aaa.c:5:warning: return type of 'main' is not 'int'
とエラ-が現れます。
return(o);を最後に追加するのでしょうか。もし、そうならば、どこに追加する
のか、教えてください。
  

このQ&Aに関連する最新のQ&A

A 回答 (3件)

標準のCでは、main は int型の関数であると定められています。


main が返す値が、そのプログラム自身が返す値として使えるよう
にするためです。

Cのテキストのいくつかは、main を void で宣言したり、教師もそ
れに沿ってそのまま教えてしまうことがありますが、正確には誤り
です。コンパイル時の warning (エラーではない)はそれを警告
しています。warning は場合によっては無視しても正しく動きます
が、それが原因で動かないこともあるので、極力修正しましょう。

結論は、main を int と宣言し、最後は 0 を return しておきましょう。

ちなみに return 文は、後に式が続くだけなので、return (0); の
ようにしなくても、return 0; で十分です。
    • good
    • 0
この回答へのお礼

お答えありがとうございます。
コンパイルは成功しました。

お礼日時:2001/06/12 18:40

戻り値が設定されていないというワーニングですね。


void型は戻り値がないわけではないので、
書いておくのが妥当です。
やっぱり、コンパイルかけたときに
エラーもワーニングもないと気分がいいじゃないですか。

参考URL:http://www.kumei.ne.jp/c_lang/
    • good
    • 1
この回答へのお礼

お答えして頂き、有難うございます。

お礼日時:2001/06/12 18:35

エラーではなくワーニングですから、そのままにしておいても特に問題は


ありませんが一応・・・。

このワーニングは「main関数の戻り値型がintではない」というものです。
main関数は本来、プログラムが正常に終わったかどうかをint型で返す事に
なっているため、boboboboさんの「void main()」という記述が引っかかっ
てしまったわけです。

ですから「void main()」を「int main()」に直し、最後の「}」の直前の
行に「return(0);」を書けばワーニングはなくなるはずです。
    • good
    • 0
この回答へのお礼

お答え有難うございます。早速、アドバイス通りに書き換えると、
コンパイルは上手くできました。 

お礼日時:2001/06/12 18:22

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJSP/サーブレットって言語なんですか?

一言なんですが、
JSP/サーブレットって言語なんですか?

Aベストアンサー

---Insider's Computer Dictionaryより引用----------
サーブレット:
Webサーバ上で実行される、Javaのプログラムモジュールのこと。Javaアプレットがクライアント側で実行されるのに対し、Javaサーブレットはサーバ側で実行されるという違いがある。Javaサーブレットと似た機能としてCGIというものもある。しかしCGIはWebブラウザからの要求に応じて、その都度起動され実行される独立したプログラムモジュールであるのに対し、Javaサーブレットは、Webサーバプロセス中のスレッドとして実現されている。そのため、サーブレット自身でステート(状態)を持った処理を行うことができるし、(いちいち外部プロセスを起動しないので)要求に対する応答も素早く、Javaなのでプラットフォームにも依存しない、という特徴がある。
---Insider's Computer Dictionaryより引用----------

JSPとは「Java Server Pages」の略で、HTMLの中に埋め込めるJavaというような感じです。
JSPは最初のリクエスト時にコンパイル(ページ・コンパイル)されて、サーバーにjavaファイルと(javaファイルをコンパイルした)クラスファイルが生成されます。
生成されたjavaファイルとクラスファイルが実はサーブレット(を継承したクラス)で、このサーブレットの中で最終的にブラウザで表示されるHTMLを返しています。

JSPはサーブレットなので、サーブレットできることはJSPでも出来ますが、現在はMVCモデルに沿ってデザインするのが主流です。
MVCモデルについて細かくは説明しませんが、MVCモデルでは
サーブレット:BeanやJSPをコントロールする
JSP:ブラウザに表示する部分を担当
というような感じです。

これから勉強するのであれば、
1.サーブレットがサーバーでどのように動いているか
をきちんと勉強し、
2.HTMLを返すだけのシンプルなサーブレット
3.JSP
4.サーブレットとJSPの連携
5.Strutsなどのフレームワークの使用
とステップアップしていくのがいいと思います。

---Insider's Computer Dictionaryより引用----------
サーブレット:
Webサーバ上で実行される、Javaのプログラムモジュールのこと。Javaアプレットがクライアント側で実行されるのに対し、Javaサーブレットはサーバ側で実行されるという違いがある。Javaサーブレットと似た機能としてCGIというものもある。しかしCGIはWebブラウザからの要求に応じて、その都度起動され実行される独立したプログラムモジュールであるのに対し、Javaサーブレットは、Webサーバプロセス中のスレッドとして実現されている。そのた...続きを読む

Qprintf( "%d", i % 10 );で?

int count;
int i;
scanf( "%d", &count );
for( i = 0 ; i < count ; i++ )
printf( "%d", i % 10 );「iを10で割った余り」だそうです。
i%5とした場合、 
 仮に5と入力すれば、01234と表示すると思いますが、
何でiを5で割れば5進数みたいにコンピュータが認識するのですか?
理論だけ勉強中で、実際試したことがありません? 
よろしくお願いします。

Aベストアンサー

例えば、246を例に考えてみます。

246を5で割ると49で余りが1

これは書き換えると
246 = 49x5 + 1 という事ですね。

次に49について同様に行なうと
49を5で割ると9で余りが4

これは書き換えると
49 = 9x5 + 4という事ですね。

最初の結果とあわせると、
246 = 9(x5x5) + 4(x5) + 1
という事ですね。

同様に9についても計算すると

246 = 1(x5x5x5) + 4(x5x5) + 4(x5) + 1

となります。


5で割った答えと5で割った余りは、5進数で一つ上の桁へ移せる部分とその桁に残る部分を分けている事になります。
10進数でも32を考えた時、30の部分は上の桁に移せる部分で(10で割った答え部分)2はその桁に残る部分(2 = 32 % 10)ですよね。

QJAVA言語,JSPによるクイズシステム(環境エクリプス5.5)(問題文はテキストで作成)

環境エクリプス5.5。JAVA言語を使いJSPでクイズプログラムを作ることになりました。流れは、いくつかの選択ボタンがあり、押したら問題が1問出て、4択式の中からクリック式で選び、正解だったら正解ページに行き、間違いだったら不正解ページに行きますが解説は正解も不正解も一緒です。その正解、不正解ページにある「次の問題」というボタンを押したら次の問題をだします。問題は10問です。MVCアーキテクチャーの概念にそって、サーブレット、モデル、ビューで作っていきます。問題をテキストにつくりたいのですが、先ほどの説明画面のようにするには、テキストでどのように作っておけばよいのか?わかりません。テキストはモデルクラスで呼ぶのですが、そのクラスでどのような定義をしたら呼べるのか?どのようにしあたら、問題、回答4つ、解説をわけることができるか?。お願いします。どなたか教えていただけませんか?できなくてとても困っています。

Aベストアンサー

RDBMSを利用可能なら、そちらの方がいいです。

利用不可でしたら、CSV(カンマ区切り)かTSV(TAB区切り)形式で十分でしょう。1行に1問を書き、左から、問題文、回答番号、回答1、回答2、回答3、回答4、の6カラムをカンマかTABで区切ります。

【例】
Javaの宿題ができない。どうする?,1,自力でやる,教えてgoo,Google,諦める
日本の首都は?,3,ニューヨーク,ロンドン,東京,モスクワ

Qreturn 0; return 1; まで同じ

#include <stdio.h>
int main()
{
printf("%d %c\n", 65, 65);
return 0;
}
 コンパイル後は
65 A
 return 1;も同じでした。
しかし
 return 2;すると
 Exited: ExitFailure 2  終了しました:出口の失敗2 となります。
 2以上でしたら、出口が塞がるのでろうぐらいしかわかりません!?
 
 どんなバクなのでしょうか!?
 よろしくお願いします。

Aベストアンサー

C 言語の仕事は「0 なり 1 なり 2 なりを返す」までであり, その値にどう対処するかは (「C のプログラム」としては処理を完全に終了しているので) C のあずかり知らぬところです.

なので, 「どんなバクなのでしょうか!?」というのはあなたの使っている OS なりシェルなりなんなりに聞いてください.

Qホームページを作成する際に良い言語

以前JSPで作っていたのですが、PHPとかでもいいのかとおも思っています。
データベースなどが必要なサイトで皆さんならどの言語がいいですか?私はプログラマーではないのでいいなりなのですが、jspは検索に引っかかりにくい言語みたいだし、 なにか良い言語があったら理由も含めて教えてください
よろしくおねがいします。

Aベストアンサー

jspが検索にひっかかりにくいってのは単に検索の仕方の問題では?
jspはjavaの構文がそのまま使えるので、
ネットの情報量としては一番多いかと思います。

Qprintf("%lf",5/3); は 0.000000 ?

Cを勉強中です。
main(){
printf("%lf",5/3);
}
をBorland C++ 5.5.1コンパイラで
コンパイルして実行すると、
0.000000 と表示されてしまいます
1.666666 と表示するには、何が足りないのでしょうか。

Aベストアンサー

printf("%lf",5/3) の 5/3 は整数の割り算となっています。
5.0のように実数を使ってみてください

QJSPからJSPへ情報を渡せる?

JAVA言語 JSPからの質問がございます。

JSPからJSPへと飛ばすときに、例えば

 a.jspがありそのjspには変数Aと変数Bと変数Cがあります。
リンクをおした時点で条件をつけてA==4
なら、b.jspへ飛びその際変数Bをb.jspにわたす。
 もしノットイコールならc.jspへ飛び、その際変数Cをc.jspにわたす。

なんていうことができるのでしょうか?
もしできるようでしたら、お手数ですが例を打っていただけませんでしょうか?宜しくお願いいたします。

Aベストアンサー

こんにちわ。
仰っているのは、Aの値に応じてリンク先が変わり、且つ、値を遷移先のJSPに渡したいということですよね?

でしたら遷移先については、
<% if (A == 4) { %>
<a href="b.jsp">リンク</a>
<% } else { %>
<a href="c.jsp">リンク</a>
<% } %>
のようにAの値によってリンク先を変更して表示すれば良いと思われます。

あとは、値の渡し方ですが、方法は複数あるように思います。
一つは、セッションを使う方法。もう一つはURLにパラメータとしてつける方法。他にもあるかもしれません。

前者はセッションスコープに値を設定するのが一般的と思われます。
request.getSession().setAttribute("B", "Bの値");
で格納し、遷移先のJSPで
request.getSession().getAttribute("B");
で取り出せます。

後者は、aタグのhrefに「b.jsp?B=3」とかにして、
request.getParameter("B");
で取り出せると思います。

「java セッション」とかで検索するとセッションに入れたオブジェクトの有効範囲(スコープ)などを解説してくれているサイトが見つかるはずです。

参考になれば幸いです。

こんにちわ。
仰っているのは、Aの値に応じてリンク先が変わり、且つ、値を遷移先のJSPに渡したいということですよね?

でしたら遷移先については、
<% if (A == 4) { %>
<a href="b.jsp">リンク</a>
<% } else { %>
<a href="c.jsp">リンク</a>
<% } %>
のようにAの値によってリンク先を変更して表示すれば良いと思われます。

あとは、値の渡し方ですが、方法は複数あるように思います。
一つは、セッションを使う方法。もう一つはURLにパラメータとしてつける方法。他にもあるかもしれません。

...続きを読む

Qfor(int i = 100, long n = 1; i > n/3i; i++)

for(int i = 100, long n = 1; i > n/3i; i++)
のように、初期設定で型の違う変数を宣言したいんだけど
C++ではこんなふうに2つ以上の型を宣言してはいけないんですか?

Aベストアンサー

,

コンマ演算子の原理です。
forの初期化文で "," で区切れるのは値を返す文だけです。
よってintステートメントもlongステートメントも値を返さないので、この文では使用できません。

というか、むしろ、intステートメントの第2引数としてlongが認識されてしまいます。
外で

int i; long n;

とし

for(i = 0, n = 0; hoge; hoge)

なら可能です。

QJSP・サーブレットとphpどちらがいい?

質問1:どちらがおすすめですか?またこのどちらかじゃなくてもいいので、webサイト構築にお勧めの言語をご教示ください

質問2:jspやサーブレットでfacebookやmixiやok waveみたいなサイトを構築できますか?

質問3:スマートフォン向けのサイトの構築でもjspやサーブレットは使えますか?

Aベストアンサー

こんにちは。


1)環境も含め簡単に作るのであればPHPがお勧めです。
Webに特化していますし。

2)もちろん出来ます。

3)もちろん出来ます。
最終的にクライアントに返るのはどんな言語を使っても同じです。(HTMLやCSS等)

Q{x = x>y ? x:y; return x;}

#include <iostream>
using namespace std;

inline int max(int x, int y){x = x>y ? x:y; return x;}

int main()
{
int num1, num2, ans;

cout << "2つの整数を入力して。\n";
cin >> num1 >> num2;

ans = max(num1, num2);

cout << "最大値は" << ans << "です。\n";

return 0;
}
の{x = x>y ? x:y; return x;}の部分の意味が解りません。

Aベストアンサー

inline int max(int x, int y){x = x>y ? x:y; return x;}
これを普通に関数で書くと

int max(int x, int y)
{
x = x>y ? x:y;
return x;
}

です。

x = 部分は右辺の結果が代入されます。これはわかりますよね。
x>y?x:y;
と書くと?より左にある条件式を判定し、その結果が真である場合は:で区切られた左側の値を、偽である場合は右の値を帰します。
x>yが真であればxを、偽であればyを返します。
それが、左辺値xに代入され、関数の戻り値として帰ります。

従って、2つの値をこの関数に入れると、大きいほうの値が帰ることになります。


人気Q&Aランキング