C言が全く分からない俺を神が救ってくれるスレ

このエントリーをはてなブックマークに追加
16デフォルトの名無しさん
単発質問スレは嫌われるものだが、変数までの説明はしてやってもいいだろ
まずC言語の基本の形
int main() {
    return 0;
}
これは下のように書いても同じ
int main()
{
    return 0;
}
これだけだと特になにもしないわけだ
17デフォルトの名無しさん:2011/11/11(金) 00:15:16.27
TVゲームによくあるHPを想像してほしい
プログラミングではHPの数字をどういう風に管理しているのか?
『変数』だ
変数とは、PCのメモリー上に名前をつけて、データを入れたり出したりできるようにした場所をいう
プログラミングの本ではデータを入れるための『箱』として解説される
HPの値はその時々によって変化するだろう?
変数に1を入れたり、2を入れたりすれば変数の持っている値は変わる
だから『変数』というわけだ
hpという変数ならhp=1 hp=2という具合だな

ただし、日本語が文末に。をつけるようにC言語では;をつける
だからhp=1;となる
そして、変数には『宣言』が必要だ
宣言なしにいきなりhp=1;とはできない
さきに、int hp;のようにする必要がある
18デフォルトの名無しさん:2011/11/11(金) 00:20:48.89
おお!ここまでは解るぞ
19デフォルトの名無しさん:2011/11/11(金) 00:26:04.25
int hp;
とは、数字を入れるための箱をhpという名前で用意しろということ
intは整数型といって整数しか入れられない箱を用意するんだ
int hp;と宣言しておくことでこれ以降でhpという箱に数字を入れたり出したりできる
ただし、出しても出しても変数の中は変化しないから注意が必要だ
20デフォルトの名無しさん:2011/11/11(金) 00:27:24.19
>>19
ふむふむ
21デフォルトの名無しさん:2011/11/11(金) 00:36:05.70
変数に数字を入れたら本当に入ってるか確かめたくなるよな
そこでprintf関数というものを使う
これにはいろんな使い方があるんだがとりあえず
int型の変数hpを表示する場合はこうだ
printf("%d", hp);

実際に変数に値を入れて
そのとおりに表示されるか試して欲しい

が、その前にint main()の前に
#include<stdio.h>
を加えて欲しい
これを入れることでprintf関数などいろんな関数(機能みたいなもの)が使えるようになる
C言語では使わないことはないというぐらいによく使うものだ
22デフォルトの名無しさん:2011/11/11(金) 00:38:07.49
>>21
ありがとうありがとう
ここまではモーマンタイだ
分かり易い(/_;)
23デフォルトの名無しさん:2011/11/11(金) 00:39:01.75
おっと、変数への代入を説明していなかったか
数学では=は等しいという意味だが、
プログラミングでは
hp=1;
というのは、hpに1を入れるという意味になる
24デフォルトの名無しさん:2011/11/11(金) 00:42:22.50
>>23
=の右側のを=の左に入れるんですね
25デフォルトの名無しさん:2011/11/11(金) 00:45:43.05
>>24
そういうこと
ああ、そうそう

int main()
{
    ここにプログラムを書く
return 0;
}

さあ、変数に値を入れて表示してみてくれ
わからなければ聞いてくれてかまわない
26デフォルトの名無しさん:2011/11/11(金) 00:56:07.50
>>25
さて、やろう
と思ったんですが
今PCでphoebe?とか何とか言うのを使ってるのですが、何かこれを使え!ってのはありますか?
visualC+とかなんとか....
27デフォルトの名無しさん:2011/11/11(金) 00:58:59.61
コンパイル出来ない(/_;)
28デフォルトの名無しさん:2011/11/11(金) 01:02:52.15
VisualC++はいろんなものが入っていて初心者にはわけわからんから別のにしたほうがいい
えーと、Cygwinとか?
大学の講義と同じのを入れるのが無難だよ
ま、インストールは別でやってもらうとして
http://codepad.org/というサイトでプログラミングをすぐに試せるからやってみ
LanguageにCを選んでC言語を書いてSubmitすれば
Outputのところに実行結果が表示される
やってみ
29デフォルトの名無しさん:2011/11/11(金) 01:05:55.74
とりあえず基礎から教えてやった方がいいよな?

//int型へのポインタpを宣言
int n=20,*p;
//pにnのアドレスを代入
p = &n;

//変数nに10を代入
*p = 10;

この時点で変数nは10になっている
これが分からなかったらもう諦メロン‥‥
30デフォルトの名無しさん:2011/11/11(金) 01:10:49.05
>>28
#include<stdio.h>
int main()
{
int hp;
int = 1;
printf("%d",hp);
return 0;
}

何回やってもエラーになります(ノД`)
31デフォルトの名無しさん:2011/11/11(金) 01:11:42.53
>>29
あばばばばばばわからん諦めれんんnおごごw
32デフォルトの名無しさん:2011/11/11(金) 01:13:13.04
あっ、デケター!
実行結果に

と出てきましたぞヽ(^o^)丿
33デフォルトの名無しさん:2011/11/11(金) 01:13:51.47
答えは

#include<stdio.h>

int main()
{
    int hp;
    hp = 1;
    printf("%d",hp);
    return 0;
}

int っていうのは宣言するときに使うだけ
int hp; でint型の変数hpを作ったら
hpを使えばいい

OK?
34デフォルトの名無しさん:2011/11/11(金) 01:15:27.02
>>30
intは型だから数字いれたりできないのな
int hp;(int型の変数hp)
つまりhp(変数)に数字をいれろ!
hp = 1;
35デフォルトの名無しさん:2011/11/11(金) 01:15:44.24
そう
36デフォルトの名無しさん:2011/11/11(金) 01:16:25.14
>>33
了解です!

あ、そういえば大学では
int main()

の()の中にvoidとか何とかを書けって言われたような...?
37デフォルトの名無しさん:2011/11/11(金) 01:17:14.36
int hp;
hp = 1;

int hp = 1;
と短くすることもできる

さらに、
int a;
int b;

int a,b;
としたり、

int a=1;
int b=2;

int a=1,b=2;
もできる
38デフォルトの名無しさん:2011/11/11(金) 01:17:51.78
>>37
ほうほう
39デフォルトの名無しさん:2011/11/11(金) 01:19:30.54
>>36
書いても書かなくても同じ
40デフォルトの名無しさん:2011/11/11(金) 01:19:34.03
>>36
書いちゃダメ
どうせ書くなら(int argc,char *argv[])にしとけ
コマンドラインで引数とらない限り関係ないが
41デフォルトの名無しさん:2011/11/11(金) 01:22:08.95
とりあえず書いとけば問題ないから!

みたいな風に言われたのに...orz
ナンテコッタイΣΣ( ̄◇ ̄;)

42デフォルトの名無しさん:2011/11/11(金) 01:23:13.64
わざわざ書く必要はないな
43デフォルトの名無しさん:2011/11/11(金) 01:23:59.99
>>42
わかりました
うわー
ほかにも意味ないこといっぱい書いてるんだろうなぁ....
44デフォルトの名無しさん:2011/11/11(金) 01:26:08.40
基本ぐらいならその辺のサイト見る方がいいんじゃね
45デフォルトの名無しさん:2011/11/11(金) 01:27:20.20
>>44
今探してたら苦Cとかなんとか言うのがあったんですが、これを頑張れば皆を見返せますか?
46デフォルトの名無しさん:2011/11/11(金) 01:28:15.62
int型のほかにchar型というのがある
char a = 'b';
これでchar型の変数aにbという文字を入れる
char型の変数は英数字1文字を入れることができる(日本語は無理)

これの表示は
printf("%c", a);


int型変数は%dで
char型変数は%cだ


char型変数の表示もやってみ
んじゃ俺は寝る
47デフォルトの名無しさん:2011/11/11(金) 01:30:18.11
>>46
そう...
このcharとかなんとかが出てきてついていけなくなったんですorz

わざわざ丁寧にありがとうございました!
頑張って勉強して教授をギャフンといわせれるように頑張ります!
お休みなさい!
48デフォルトの名無しさん:2011/11/11(金) 01:31:01.10
>>45
苦Cは正直あまりおすすめしない
49デフォルトの名無しさん:2011/11/11(金) 01:31:17.66
あ、あと参考までに学部学科教えてくれ
情報学部だよな?
50デフォルトの名無しさん:2011/11/11(金) 01:33:24.94
>>48
マジですか
うわあどうしよう

>>49
そうです情報工学部...
何でこんなとこ来たんだろう
51デフォルトの名無しさん:2011/11/11(金) 01:34:11.32
charで躓くってどういうことだよ
何が分からないのかいってみてみごらん
52デフォルトの名無しさん:2011/11/11(金) 01:36:55.53
int main のint も不要

main()
{
}

これで動く
53デフォルトの名無しさん:2011/11/11(金) 01:40:14.22
SkypeIDあるなら暇だしいつでも教えてあげるぞー
54デフォルトの名無しさん:2011/11/11(金) 01:42:25.54
>>52
えwまじですかw
スリムでかっちょええw

>>53
コミュ障なので...w
55デフォルトの名無しさん:2011/11/11(金) 01:43:07.66
main()
{
extern int printf(const char *format, ...);
int a=1;
printf("%d",a);
}
56デフォルトの名無しさん:2011/11/11(金) 01:44:03.70
俺もコミュ障だし大丈夫
あと>>52のやり方は確かに動くけどよくないその場しのぎ
57デフォルトの名無しさん:2011/11/11(金) 01:44:36.06
>>55
extern〜なんちゃらのとこがすでに意味不明でござるw
58デフォルトの名無しさん:2011/11/11(金) 01:45:09.10
void main()
{
}

通はvoid main()
59デフォルトの名無しさん:2011/11/11(金) 01:45:09.32
main()
{
}
は、実行には何の問題もないが
まず突っ込まれることだろう
60デフォルトの名無しさん:2011/11/11(金) 01:45:14.93
extern int printf(const char *format, ...);

これは型式であってそのまま使うもんじゃないぞ
61デフォルトの名無しさん:2011/11/11(金) 01:45:16.54
>>56
やっぱりintは書いておくに越したことは無いんですね(^-^;
62デフォルトの名無しさん:2011/11/11(金) 01:47:07.97
関数の頭につけてるのは関数の返り値の型
63デフォルトの名無しさん:2011/11/11(金) 01:47:36.87
int main(int argc, char** argv)
{
return 0;
}

いつもこう書く良い子ちゃん
64デフォルトの名無しさん:2011/11/11(金) 01:47:58.22
ぎょへー
なんか高度な話になってきたぞ
ふひひ
65デフォルトの名無しさん:2011/11/11(金) 01:49:53.34
>>61

int main()
{


return 0;
}


この書き方で統一させておいたらいいよ
66デフォルトの名無しさん:2011/11/11(金) 01:50:15.77
>>65
了解
これで行きます
67デフォルトの名無しさん:2011/11/11(金) 01:51:23.83
charで躓いてるってことは条件分岐とかも全くわからないの?
68デフォルトの名無しさん:2011/11/11(金) 01:51:54.60
駄目だー
苦Cっての見てもいろいろ有りすぎて何から手をつければ良いんだー
69デフォルトの名無しさん:2011/11/11(金) 01:52:29.92
>>67
yes
ifだのwhileだのforをまわすだのなんだの
やめてくれええええええええ
70デフォルトの名無しさん:2011/11/11(金) 01:54:08.35
おまえわざとわからないふりしてるだろ?w
71デフォルトの名無しさん:2011/11/11(金) 01:54:11.22
>>69
じゃあ例えば、画面上に「a」って1文字だけ出すプログラム書いてみてよ
72デフォルトの名無しさん:2011/11/11(金) 01:56:44.37
>>71
#include<stdio.h>
int main(){
int b = a;
printf("%d",b);
return 0;
}



どうでしょうか!
73デフォルトの名無しさん:2011/11/11(金) 01:57:38.00
>>72
残念
ではヒント

int ってのは整数を入れる箱
char ってのは文字を入れる箱
74デフォルトの名無しさん:2011/11/11(金) 01:59:55.58
>>73
あ....
最後のやつでしたねそういえば....


てことは
int b = a;を
char b = a;にして
%c
にすればいいわけですね!
75デフォルトの名無しさん:2011/11/11(金) 02:01:52.34
そういうこと
これでchar型の変数は扱える

でもそんな難しく考えなくても
#include<stdio.h>
int main(){
printf("a");
return 0;
}

で正解だったんだけどね
76デフォルトの名無しさん:2011/11/11(金) 02:04:35.29
>>75
あ、hello worldと同じなんですねorz

77デフォルトの名無しさん:2011/11/11(金) 02:05:08.06
じゃあ次にaという変数に3.14って値を代入して
その変数aを使って「πは3.14」って画面上に表示させてみてよ
78デフォルトの名無しさん:2011/11/11(金) 02:12:46.26
>>77
#include<stdio.h>
int main(){
int a = 3.14;
printf("π=%d");
return 0;
}

ですか?
てかwindows標準搭載のコマンドプロンプトでC打ち込めますか?
なんか今ほかのコンパイラとか言うやついろいろやってるけどインストールすら出来なくて...orz
79デフォルトの名無しさん:2011/11/11(金) 02:15:16.14
>>78
http://ideone.com/

ここ使うと良いと思う
プログラム書き込んで左のC選んでsubmit
一度そのプログラムいれてみて
間違ってるから多分エラーが出る
80デフォルトの名無しさん:2011/11/11(金) 02:18:38.97

printf("π=%d");

とりあえずこの部分はよく見たら何が間違いか自分でも気付くんじゃないかな?
このスレの前半部分でもちゃんと分かってたはず
81デフォルトの名無しさん:2011/11/11(金) 02:19:31.98
>>79
π =3........だ....と....
82デフォルトの名無しさん:2011/11/11(金) 02:20:38.14
>>80
intと%dは整数型...そういうことですか?!
83デフォルトの名無しさん:2011/11/11(金) 02:22:51.04
>>81
つまりintじゃ小数点のついた数はちゃんと表示されないってことだ
となるとやはり小数点の値用の箱が用意されてるはず
それがdoubleっていう物なんだよ
で、intでいう「%d」charでいう「%c」がdoubleの場合「%f」になる
もう一度入力してみて
84デフォルトの名無しさん:2011/11/11(金) 02:24:24.29
>>82
そういうこと

あと
printf("π=%d");
は凡ミスだと思うけど
printf("π=%d",a);
にしないとだめね
85デフォルトの名無しさん:2011/11/11(金) 02:24:34.14
>83
そんなことはない
自分で決めればいいじゃないか
固定小数点数とかもあるし
86デフォルトの名無しさん:2011/11/11(金) 02:25:24.38
>>83
π=-0.00000


ってなんなんだ....or
87デフォルトの名無しさん:2011/11/11(金) 02:26:39.10
なったああああああああ
π=3.140000

なんで0が4個ついてるか知らんがなりましたぜ!
88デフォルトの名無しさん:2011/11/11(金) 02:27:18.67
>>85
あくまでもC言語の導入部分の話なんだからそんなこと言うとこんがらがるんじゃね?
89デフォルトの名無しさん:2011/11/11(金) 02:29:32.47
>>87
それでおk

これで
整数は int →%d
一文字は char →%c
小数は double →%f

ってのはわかったよね?
90デフォルトの名無しさん:2011/11/11(金) 02:30:38.30
>>89
了解です!
これで明日のプログラミングのポイントがどーとかもバッチリです!
ありがとうございます!






...orz
91デフォルトの名無しさん:2011/11/11(金) 02:31:04.82
d decimal
c character
f floating point number
92デフォルトの名無しさん:2011/11/11(金) 02:32:46.39
>>91
ふ、浮動小数点....
93デフォルトの名無しさん:2011/11/11(金) 02:35:08.95
>>90

ここで補足
「%f」っていうのは便利なことに
自分がどういう表示をさせたいか、ってのも決めることが出来る
π=3.140000を
π=3.14
という表示にできるかどうかってのはこいつにかかってるわけだ

たとえばこの場合は
全体を4桁(小数点を含む)、小数点以下は2桁にしたいわけだから
%4.2fという風に%とfの間に挟んじゃう
94デフォルトの名無しさん:2011/11/11(金) 02:36:12.40
>>93
これは凄い
成る程良くできてるなぁ...
95デフォルトの名無しさん:2011/11/11(金) 02:39:52.37
>>94
じゃあ、変数a,b,cを使ってそれぞれに10,3,3.33を代入して
その変数を使って
「10割る3は3.33」って表示させてみて
この時「10割る3は3.330000」みたいにならないように
96デフォルトの名無しさん:2011/11/11(金) 02:42:03.99
>>95
や、ヤバい眠いですぞ...
自分でスレ立てたのに.
ようし!
少なくともこの課題をクリアするまではがんばるぞ!
少々お待ちを....
97デフォルトの名無しさん:2011/11/11(金) 02:43:07.24
>>96
これで最後ね
あと、プログラム書くところの右下、syntax highlightって所にチェック入れるとやりやすくなるよ
98デフォルトの名無しさん:2011/11/11(金) 02:46:58.24
>>97
出来ました!
結果は10/3=3.33です!
どうでしょうか?

#include<stdio.h>

double main(){

double a = 10,b = 3, c = 3.33;

printf("%2.0f/%1.0f=%4.2f",a,b,c);

return 0;

}
99デフォルトの名無しさん:2011/11/11(金) 02:49:07.27
>>98
まあよしとしようw

ただ、わざわざ整数型の数字をdoubleにする必要はなくて

#include <stdio.h>

int main()
{
int a = 10,b = 3;
double c = 3.33;

printf("%d/%d=%4.2f",a,b,c);

return 0;
}

これの方がよかったかな
ご苦労
100デフォルトの名無しさん:2011/11/11(金) 02:50:46.64
>>99
あ、わければよかったんですねw
くっっそーーー

でも楽しーー!
こんな初歩でもちゃんと動いたらめっちゃうれしいですw

こんな遅くまでありがとうございました(*゚▽゚)ノ
頑張って勉強します!
お休みなさい〜Zzzz
101デフォルトの名無しさん:2011/11/11(金) 02:51:15.19
>>98

あ、でも

double main{

}

これはだめだわ
プログラムに使われる数字がなんであれ
int main{


}
であることは変わらないから気をつけて
102デフォルトの名無しさん:2011/11/11(金) 02:52:10.52
>>101
始まりは絶対int....ってことですね
ってことはcharの時も
int main()


char a;
てことですよね?
103デフォルトの名無しさん:2011/11/11(金) 02:54:59.03
>>102
そういうこと
int main()
{
は何も悩まずそのまま書いちゃってdoubleだとかcharだとか悩むのはそれ以降ってことね

どうせ暇だしまたいつでも教えてあげる