modori = 17になる理由を教えてください

このQ&Aのポイント
  • modori = 17となる理由を教えてください。
  • コンパイラーソフトを使用してネット上で実行した結果、modori = 17となりました。
  • コンパイラーソフトをオペレーティングシステムにインストールして使用している場合、結果は同じですか?もし同じであれば、modori = 17になる理由を教えてください。
回答を見る
  • ベストアンサー

modori = 17になる理由を教えてください。

#include <stdio.h> int main() { int modori; modori = kansuu(2, 3); printf("modori = %d\n", modori); return 0; } int kansuu(int hikisuu1, int hikisuu2) { printf("kansuu de hyouji\n"); }  コンパイラーソフトは  http://codepad.org/KZDkVV1K  のネットで実施していまして!  これしかないです。    結果は kansuu de hyouji modori = 17  となりました。    皆様はコンパイラーソフトはOSにインストールしてお使いだと思います。 その場合も結果は同じでしょうか!?  もし同じでしたら、 modori = 17になる理由を教えてください。  以上よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.3

回答はNo1の方を参考にされるとして、コンパイラは Visual Studio Express 2013 for Windows Desktopをご利用になればいかがですか http://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx 上記で Express 2013 for Windows Desktop を選んでください。 Microsoft アカウントは必要になると思いますが無料です。

Campus2
質問者

お礼

 ご回答毎度ありがとうございます。 Visual Studio Express 2013 for Windows Desktop  は何とかインストールはしました。  目的ととする「C言語」のコンパイルですが ご紹介していただいた、 http://ateliereclair.blog.fc2.com/blog-entry-51.html  で、   できるか試しました。  その中の手順項目の以下で   (11) 新しい項目の追加ウィンドウで、以下の作業をする。 左側で、インストール済み → Visual C++ → コードを選択。 右側で、C++ ファイル(.cpp) を選択。  とあり   言語選択で 目的とする C言語の選択できず そこでリタイヤ  しました。  現時点では コンパイルができておりません?  C言語ののコンパイルは  Express 2013 for Windows Desktop   ではできるのでしょうか?  

Campus2
質問者

補足

ご回答ありがとうございます。  Microsoft Visual Web Develoer 2010 Express  はセットアップ済みですが!  使い方がわかりません?    もしよろしければ、手順を教えていただけたら助かります。

その他の回答 (6)

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.7

> C言語ののコンパイルは  Express 2013 for Windows Desktop >  ではできるのでしょうか? 左側で、インストール済み → Visual C++ → コードを選択。 右側で、C++ ファイル(.cpp) を選択。 このまま先に進んで大丈夫です。今回の質問のコードだとエラーが2か所ありますので、コンパイル(ソリューションのビルド)で下のペイン(エラー一覧)にエラーが表示されます。前回のコードだとエラーが出なく正常終了するので (16) デバッグ → デバッグなしで開始 を選択する (17) コンソール画面が開き、実行結果が表示されているのを確認する。 まで進んでいけます。 エラーがあっても止まらずに変な結果を出すコンパイラより、エラーだときちんと警告して止まってくれるものを利用されるほうが勉強のためにはいいと思いますので頑張ってください。 また、エラーなどが出た場合、エラー一覧で該当エラーをダブルクリックしたらエラー箇所に飛んでくれますし、デバッグ→オプションと設定→テキストエディター→C/C++全般で「行番号」にチェックを入れて行番号を表示しておくと、エラー一覧で該当エラーがどこなのか右のほうに「行」がでますのでそれを参考に該当箇所を探すこともできます。

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.6

Web Develoer 2010 ではなくNo3で紹介したVisual Studio Express 2013 for Windows Desktopをご利用になるのでしたら以下のページに簡単な利用方法が記載されていますので参考にしてください。 http://ateliereclair.blog.fc2.com/blog-entry-51.html

Campus2
質問者

お礼

ご回答ありがとうございました。 http://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx では 「Microsoft Visual Studio Express 2013 for Windows Desktop  を選んでください。 と! せっかくご紹介していただいていたことを、後から気づきました_ _  Visual Studio Ultimate 2013 を入れ始めて早1.8時間が経過したぐらいです。  キャンセルするのも勿体ないので、とりあえず入れてみて、C言語コンパイル ができるか!?できければ、OKですが!  できなければ、2013 for Windows Desktopへ変更いします。    以下ですが http://ateliereclair.blog.fc2.com/blog-entry-51.html (12) ソースファイルが出来たのを確認する。~    画面が少しぼやけていますが、たしかに、!C言語のソースが見えています。  Microsoft Visual Studio Express 2013 for Windows Desktop  で  C言語のコンパイルができると思います。  

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.5

> Microsoft Visual Web Develoer 2010 Express > はセットアップ済みですが! >  使い方がわかりません? Webアプリケーションを作ろうとしてるのでしょうか。私は利用していないので使い方の説明は残念ながらできませんし、たぶん利用してる人でもここでは使い方を説明するスペースがないと思いますので https://www.google.co.jp/search?sourceid=navclient&aq=hts&oq=&hl=ja&ie=UTF-8&rlz=1T4GUEA_jaJP587JP587&q=Microsoft+Visual+Web+Develoer+2010+Express#newwindow=1&safe=off&hl=ja&q=microsoft+visual+web+developer+2010+express+%E5%85%A5%E9%96%80&revid=578406140 こちらで出てくるページを参考にしてください。 ちなみにWeb Develoer はC#とVBしか対応していないと思いますが…。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.4

ネットだけでやるのは無理があると思いますよ。 今まで質問内容からしても。 質問自体の回答はすでにいろいろ付いているので。 # 今時のまともなコンパイラならこのコードはエラーです。 > Microsoft Visual Web Develoer 2010 Express > はセットアップ済みですが! ソレはC/C++のコンパイラじゃありません。 http://msdn.microsoft.com/ja-jp/library/vstudio/dd537667%28v=vs.100%29.aspx 「Microsoft Visual Web Developer Express は、使いやすい、動的な Web アプリケーション開発用の環境です。」をどう読んだらC/C++コンパイラだと解釈できるんです? とりあえず、4000円程度用意して大きめの本屋に行ってください。 コンピュータ/プログラミング関係のコーナーに行けばVisual Studio ExpressEdition 付きの書籍が何種類かあるハズです。 # 2005/2008/2010/2012/2013のどれかは判りませんが。 # 2010以降をとりあえず勧めておきますかね。(2005~2010と2012以降で使い方は結構異なるのでご注意を) # http://www.amazon.co.jp/dp/4899774117 # http://www.amazon.co.jp/dp/4899772572 # など…。アマゾンで探すと意外に少ないな。 あんまり高いのは…というのであれば、日経ソフトウェアのムック本があるかと思われます。 # http://www.amazon.co.jp/dp/482227716X とか。 # ってあんまし安くはないな…。 本屋では即購入はしないで最初の方とか立ち読みして、自分に合っている(理解しやすい書き方されている)本を購入してください。 # できれば2冊程度購入することを勧めます。 「Visual Studioの使い方」を解説している本がどの程度あるかは不明ですが。 # まぁ、極端なハナシ私自身Visual Studioの使い方把握しているわけではありませんし。 # 普通にプログラミングやデバッグするのに困らない程度には使っていますが。 # 便利な機能もあるんでしょうけど、その辺りは後回しですねぇ。(特定の変数の内容が変更されたらブレークとか…) 安くはない本を数発購入すれば、なあなあでやろうとも思わないでしょう? 金払った分の元は身につけないと……ねぇ。 # とか言いつつ…C++とJava、身についてないな。読む暇が無いんだけど。(ネットする時間はあるくせにな)

  • wormhole
  • ベストアンサー率28% (1621/5657)
回答No.2

>もし同じでしたら、 >modori = 17になる理由を教えてください。 同じになるとは限らないし17になってるのはたまたま。 >int kansuu(int hikisuu1, int hikisuu2) そもそもがkannsuu()はintを返すとしてるのに実際には何も返してないから動作不定です。

noname#228233
noname#228233
回答No.1

そのコンパイラーのエラーチェックが笊だからそのようなコードで実行形式が出来てしまっているだけで、本来は、kansuu()の関数に戻り値を指定していない時点でスエラーです。 で、何故17になるか良いますと、printf("kansuu de hyouji\n");の戻り値が17なので、その後に処理が無く関数を終了していますから、その値がそのままkansuu()の戻り値として返されているに過ぎません。 因みに、printf()の戻り値は、出力した文字列のバイト数です。

Campus2
質問者

お礼

ご回答ありがとうございます。  たしかに  printf("kansuu de hyouji\n");を  printf("kansuu \n");  に変更後の結果は kansuu modori = 8    「printf()の戻り値は、出力した文字列のバイト数です。」  みたいです。

関連するQ&A

  • コンパイルの回答行の上下を入れ替えるには!

    #include <stdio.h> int kansuu(int hikisuu1, int hikisuu2); int main() { int modori; modori = kansuu(2, 3); printf("modori = %d\n", modori); return 0; } int kansuu(int hikisuu1, int hikisuu2) { printf("kansuu de hyouji\n"); return hikisuu1 * hikisuu2; }  以上のコンパイルの結果は  kansuu de hyouji modori = 6   ですが!  これを  modori = 6 kansuu de hyouji  にすることは可能でしょうか!?  よろしくお願いします。

  • プログラムの通常の流れは上~下でコンパイルされる?

    #include <stdio.h> int kansuu(int hikisuu1, int hikisuu2); int main() { int modori; modori = kansuu(2, 3); printf("modori = %d\n", modori); return 0; } int kansuu(int hikisuu1, int hikisuu2) { printf("kansuu de hyouji\n"); return hikisuu1 * hikisuu2; }  以上プログラムですが、 結果は以下です。 kansuu de hyouji modori = 6  素人の目からして! printf("modori = %d\n", modori);が  最初にあるので  以下がコンパイル結果になりそうですが!? modori = 6 kansuu de hyouji  この場合なぜ! kansuu de hyouji  が最初になるのでしょうか!?   よろしくお願いします。

  • 正確なあ値でしょうか!?

    http://codepad.org/cBK5A67i を使って以下をコンパイルしたところ! No.1 #include <stdio.h> void kansuu(); int main() { kansuu(); return 0; } void kansuu() { printf("kansuu de hyouji\n"); No.2 }  #include <stdio.h> void kansuu(); int main() { kansuu(); } void kansuu() { printf("kansuu de hyouji\n");   return 0; } 以上の  コンパイルの結果はNo.1、No.2とも  kansuu de hyouji  となりました。    No.2の結果は   正確な値でしょうか  それともバグでしょうか?  よろしくお願いします。

  • 参考書にありますが削除しても結果は同じでした。

    #include <stdio.h> int kansuu(int hikisuu); int main() { int modori; modori = kansuu(2); printf("modori = %d\n", modori); return 0; } int kansuu(int hikisuu) { printf("kansuu de hyouji\n"); return hikisuu * 2; }  以上のプログラムは参考書の内容ですが、コンパイルした結果が、 kansuu de hyouji modori = 4  です。 二行目の   int kansuu(int hikisuu);がなくても、結果は同じでした。  参考書の説明では  「ここでは、関数kansuuの定義とプロトタイプ宣言に 、引数を追加しました。  引数の名前はhikisuuとして、int型の値を記憶できるようにしました。  int kansuu(int hikisuu); ←関数に引数を追加」  以上、  なぜ!参考書はint kansuu(int hikisuu);があるのかがわかりません!?  よろしくお願いします。  

  • 仕組みがいまいちですが!

    #include <stdio.h> int kansuu(int hikisuu1, int hikisuu0); int main() { int modori; modori = kansuu(2, 3); printf("modori = %d\n", modori); return 0; } int kansuu(int hikisuu1, int hikisuu2) { printf("kansuu de hyouji\n"); return hikisuu1 * hikisuu2; } 以上でが、コンパイルすると  kansuu de hyouji modori = 6  となり成り立ちますが!  int kansuu(int hikisuu0, int hikisuu1);  としても成り立ちます。 int kansuu(int hikisuu1, int hikisuu1);  にすると以下のエラーが出ます。 Line 2: error: redefinition of parameter 'hikisuu1' Line 2: error: previous definition of 'hikisuu1' was here    なぜerrorとなるのでしょうか  よろしくお願いします。

  • 配列について

    初歩的な質問ですいませんが、質問よろしくお願いします。 ◎1----------------------------- #include<stdio.h> int main(void) { char ss[10]="AB"; printf("ss=%s\n",ss); return 0; } ------------------------------------ ◎2-------------------------------- #include<stdio.h> int main(void) { char ss[10]; ss[0]='A'; ss[1]='B'; ss[2]=0; printf("ss=%s\n",ss); return 0; } ----------------------------------- ◎3------------------------------- #include<stdio.h> #include<string.h> int main(void) { char ss[10]; strcpy(ss,"AB"); printf("ss=%s\n",ss); return 0; } ----------------------------------- ◎4------------------------------- #include<stdio.h> int main(void) { char ss[10]; ss="AB"; printf("ss=%s\n",ss); return 0; } ---------------------------------- 以上4つのプログラムで、◎2と◎3は正常に動くと理解できたのですが、何故、◎1は正常に動き、◎4は「'const char [3]' から 'char [10]' に変換できません。」といったようなエラーが出てしまうか分かりません。 教えていただければ嬉しいです。

  • Re: Vista c言語でのエラー

    直前の質問だったのですが、どうやらプログラムが壊れているみたいなんです。 #include <stdio.h> int main(void) { int sum,, no ; printf("整数を入力してください: "); scanf("%d", sum); printf("%d\n", sum); return (0); } と、とても簡単なプログラムに変えてみると、 整数を入力してください: 25 [Enter] 2147348480 となりました。また int sum, no; と変数を二個にすると前記のエラーが起こりました。 そのほかのプログラムを実行しても同じ結果でした。 コンパイラがおかしくなっちゃったんでしょうか?

  • cではよくてc++ではダメな理由

    #include <stdio.h> #include <stdlib.h> int main(void) { int *x; x = calloc(1, sizeof(int)); if (x == NULL) puts("記憶域の確保に失敗しました。"); else{ *x = 57; printf("*x = %d\n", *x); free(x); } return 0; } 上のソースなのですがcallocの戻り値がvoidなのでintにはキャストしてくれみたいなことを コンパイラに言われます。 cではコンパイルできてc++ではコンパイルできないのはなぜでしょう。

  • Visual Stadio でのC言語ですが

    すごい初歩的な質問で申し訳ないのですが 画面にabcdeと表示させるときに通常のコンパイラーだと getchar();と入れなくてもいいのですが VisualStdioだと、これを入れないとコンソール表示をしてくれません。 どうしてなのでしょうか? 決まりといわれてしまえばそれまでなのですが・・・ #include<stdio.h> int main(void) { printf("abcde\n"); getchar(); return 0; }

  • C言語について

    次のような問題です。 問 自然数nを入力し、nを3で割って割り切れるかどうかを判定し結果を表示する。「割り切れる」、「1余る」、「「2余る」のいずれかが入るものとする。 このようなものをつくりました。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n==0){ printf("割り切れる\n"); }else if(n==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); } これで合っているかよろしくお願いします。

専門家に質問してみよう