#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になる理由を教えてください。

 以上よろしくお願いします。

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

A 回答 (7件)

回答はNo1の方を参考にされるとして、コンパイラは


Visual Studio Express 2013 for Windows Desktopをご利用になればいかがですか
http://www.visualstudio.com/ja-jp/products/visua …
上記で
Express 2013 for Windows Desktop
を選んでください。
Microsoft アカウントは必要になると思いますが無料です。

この回答への補足

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

補足日時:2014/11/08 19:30
    • good
    • 0
この回答へのお礼

 ご回答毎度ありがとうございます。

Visual Studio Express 2013 for Windows Desktop
 は何とかインストールはしました。

 目的ととする「C言語」のコンパイルですが
ご紹介していただいた、
http://ateliereclair.blog.fc2.com/blog-entry-51. …
 で、
  できるか試しました。
 その中の手順項目の以下で
 
(11) 新しい項目の追加ウィンドウで、以下の作業をする。

左側で、インストール済み → Visual C++ → コードを選択。
右側で、C++ ファイル(.cpp) を選択。

 とあり
  言語選択で 目的とする C言語の選択できず そこでリタイヤ
 しました。

 現時点では コンパイルができておりません?

 C言語ののコンパイルは  Express 2013 for Windows Desktop
  ではできるのでしょうか?
 

お礼日時:2014/11/13 05:48

> C言語ののコンパイルは  Express 2013 for Windows Desktop


>  ではできるのでしょうか?

左側で、インストール済み → Visual C++ → コードを選択。
右側で、C++ ファイル(.cpp) を選択。

このまま先に進んで大丈夫です。今回の質問のコードだとエラーが2か所ありますので、コンパイル(ソリューションのビルド)で下のペイン(エラー一覧)にエラーが表示されます。前回のコードだとエラーが出なく正常終了するので

(16) デバッグ → デバッグなしで開始 を選択する
(17) コンソール画面が開き、実行結果が表示されているのを確認する。

まで進んでいけます。
エラーがあっても止まらずに変な結果を出すコンパイラより、エラーだときちんと警告して止まってくれるものを利用されるほうが勉強のためにはいいと思いますので頑張ってください。

また、エラーなどが出た場合、エラー一覧で該当エラーをダブルクリックしたらエラー箇所に飛んでくれますし、デバッグ→オプションと設定→テキストエディター→C/C++全般で「行番号」にチェックを入れて行番号を表示しておくと、エラー一覧で該当エラーがどこなのか右のほうに「行」がでますのでそれを参考に該当箇所を探すこともできます。
    • good
    • 0

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



http://ateliereclair.blog.fc2.com/blog-entry-51. …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

http://www.visualstudio.com/ja-jp/products/visua …
では
「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. …
(12) ソースファイルが出来たのを確認する。~
 
 画面が少しぼやけていますが、たしかに、!C言語のソースが見えています。
 Microsoft Visual Studio Express 2013 for Windows Desktop
 で
 C言語のコンパイルができると思います。

 

お礼日時:2014/11/10 23:11

> Microsoft Visual Web Develoer 2010 Express


> はセットアップ済みですが!
>  使い方がわかりません?

Webアプリケーションを作ろうとしてるのでしょうか。私は利用していないので使い方の説明は残念ながらできませんし、たぶん利用してる人でもここでは使い方を説明するスペースがないと思いますので

https://www.google.co.jp/search?sourceid=navclie …

こちらで出てくるページを参考にしてください。

ちなみにWeb Develoer はC#とVBしか対応していないと思いますが…。
    • good
    • 0

ネットだけでやるのは無理があると思いますよ。


今まで質問内容からしても。

質問自体の回答はすでにいろいろ付いているので。
# 今時のまともなコンパイラならこのコードはエラーです。


> Microsoft Visual Web Develoer 2010 Express
> はセットアップ済みですが!

ソレはC/C++のコンパイラじゃありません。
http://msdn.microsoft.com/ja-jp/library/vstudio/ …
「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、身についてないな。読む暇が無いんだけど。(ネットする時間はあるくせにな)
    • good
    • 0

>もし同じでしたら、


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

同じになるとは限らないし17になってるのはたまたま。

>int kansuu(int hikisuu1, int hikisuu2)

そもそもがkannsuu()はintを返すとしてるのに実際には何も返してないから動作不定です。
    • good
    • 0

そのコンパイラーのエラーチェックが笊だからそのようなコードで実行形式が出来てしまっているだけで、本来は、kansuu()の関数に戻り値を指定していない時点でスエラーです。


で、何故17になるか良いますと、printf("kansuu de hyouji\n");の戻り値が17なので、その後に処理が無く関数を終了していますから、その値がそのままkansuu()の戻り値として返されているに過ぎません。
因みに、printf()の戻り値は、出力した文字列のバイト数です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/11/08 19:17

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

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

Qint i,j; \n i=0,j=5;

int i,j;
i=0;
j=5:
と書いてあるソースは普通ですが、
int i,j;
i=0,j=5:
と書いてあるソースもあります。
後者はC++の正しい書式ですか?

カンマ演算子というのは後者のカンマのことですか?

Aベストアンサー

 正しい書式です。

i=0,j=5;
 における、「,」をカンマ演算子といいます。2項の演算子です。カンマで区切られた演算を「左から順番に」実行し、最後の演算を結果として返します。
 したがって、例の文であれば、i=0を実行し、次にj=5を実行。そして、j=5の結果の5を結果として返します。
 ・・・
 が、本来的には、あまり、例のような使い方はしませんね。よく見られるのは、次のような場合です。

 for (i=0,j=0 ; i < 50 ; ++i,++j) {

 のような形でよく見られます。for文の各式は、一つの式でなければならないので、こんな書き方をするわけです。初期化と更新部が一つにまとまり、ループが読みやすくなるのが利点かな。

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つの値をこの関数に入れると、大きいほうの値が帰ることになります。

Qint nII[10] = { 0 }について

久々にCを使ってプログラムを組んでいるのですが、基本的な構文を思い出せず
いくつか教えていただきたく質問させていただきました。

1)配列すべてを初期化するのに、宣言時に

int nII[10] = { 0 };

で大丈夫だった(全ての要素が0で初期化)と記憶しているのですが、間違いないでしょうか?

2)構造体の初期化は

struct tm tm;
memset(&tm, 0, sizeof(struct tm))

で大丈夫でしょうか?

3)構造体の宣言は

typedef struct{
int a;
}HOGE, *LPHOGE;

HOGE st; // <- struct HOGE stと同じ
LPHOGE pst; // <- struct HOGE* pstと同じ

で問題ないでしょうか?

以上、3つ質問になって申し訳ないのですが、よろしくお願いします。

Aベストアンサー

1)OK
2)たぶんOK
3)HOGEという名前の構造体はない(当該の構造体には名前がない)ので、
// 以下のコメント記述が誤っています。ただし、

HOGE st;
LPHOGE pst;
という定義そのものはOK

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)

なら可能です。

Qtry{}catch(){}とデストラクタの関係を教えてください。

try-catchでメモリ確保を含むクラスをスローした場合、デストラクタはどの時点で働くのか、教えてください。たとえば、↓の使いかたは大丈夫でしょうか?

【1】
try{
 throw(CError(100, "エラー情報"));
}catch(CError& err){
 //ここでerrを参照しても問題ないのでしょうか?
}

【2】
try{
 CError err(100, "エラー情報");
 throw(err); // (1)
}catch(CError& err){
 //ここでerrを参照しても問題ないのでしょうか?
 //まだデストラクタはちゃんと動作するのでしょうか?
 //catchが呼び出し元のメンバであったりしても大丈夫なのでしょうか?
}

宜しくお願いします。

Aベストアンサー

【1】【2】どちらの場合も問題がありません。
コンパイラが必要に応じてerrオブジェクトのコピーを作成します。
デストラクタが呼び出されるタイミングはコンパイラに依存するところもあると思いますが、
例えばVC7.1では【2】は以下のように動作します。
(1) errオブジェクトのコンストラクタが呼び出される
(2) CErrorクラスのテンポラリオブジェクト(以下a)のコピーコンストラクタが呼び出される。
(3) errオブジェクトのデストラクタが呼び出される
(4) catch文まで到達
(5) aオブジェクトのデストラクタが呼び出される。

VC7.1では、【1】は以下のように動作します。
(1) errオブジェクトのコンストラクタが呼び出される
(2) catch文まで到達
(3) errオブジェクトのデストラクタが呼び出される。

コンパイラがオブジェクトのコピーを省略しているようです。


人気Q&Aランキング

おすすめ情報