#include ←俺はC言語の勉強を諦めた

  • 2020.02.15
  • VIP
#include  ←俺はC言語の勉強を諦めた

1:【スレ主】23:27
はい
2:CIg4yuyQp.net 23:28
早めにセンスないって気付けてよかったじゃん
4:TPvTEnS5M.net 23:28
それ最近までスタジオ.hだと思ってた
5:mESe1L10.net 23:28
おまじないです←最高に馬鹿
10:PhKHzT0a.net 23:30
>>5
こいつが初学者の邪魔をしてる
おまじないとか書いてる本は信用しちゃならん
11:6zIxRFi70.net 23:31
>>10
別におまじないでもよくね?
機械語への変換も魔法みたいなもんじゃん
17:hTmbg12R0.net 23:34
>>10
最後までおまじないで済ませるのはあかんけどあとで説明するならおまじないでもいいよ
どうせ先に関数とプロトタイプ宣言について解説しないとあかんし
printfみたいな可変長引数でHello Worldしてるほうが混乱を招く
52:o5aifg52p.net 00:05
>>10
最初からStanderdIOライブラリを読み込む構文ですとか言ったらみんな投げちゃうからじゃない?
18:ddEPX7ND0.net 23:35
>>10
苦しんで覚えるCは神だね

↓サイトより引用
前項で、printf関数を使ったプログラムは完成したはずなのですが、
実は、このプログラムは準備不足なので、動かしても画面に文字は表示されません。
お節介を焼くコンパイラでは動いてしまいますが・・・

実は、printf関数は、C言語自体の機能ではありません。
言い換えるならば、C言語のコンパイラは、printfという関数のことを全く知りません。
従って、ただprintf関数を記述しただけでは、動かないのです。
動作させるには、コンパイラにprintf関数の説明書を読ませなければなりません。

C言語には、説明書を渡すための特別な命令が用意されています。
それは、#include(インクルード)疑似命令です。
#include疑似命令は、次のようにして使うことが出来ます。
疑似命令疑似命令とは、プログラムコードではない命令のことです。#includeはprintf関数などの準備をする命令なので、 この命令は機械語に翻訳されず、その前段階で処理されます。#include printf関数の説明書は、stdio.hと言うファイルです。
つまり、次のようなプログラムを追加すれば、printf関数を使えるようになります。
ところで、この命令はどこに書けば良いのでしょうか?
プログラムの説明書を渡すのですから、プログラムが実行される前である必要があります。
プログラムが実行されてしまった後では、説明書を渡しても手遅れなのです。
このことから考えて、1番先頭(main関数よりも先)に書くのが良さそうです。
つまり、printf関数で画面に文字列を表示するプログラムは、次のようになります。
なお、#includeは疑似命令なので、関数の外側に書くことが出来ます。

24:ZJ3HqSpgp.net 23:41
>>18
それ、初学者にとってはレベル高すぎて不適格でしょ
37:ddEPX7ND0.net 23:47
>>24
苦Cは初学者に何故を手取り足取り教える入門サイトだぞ
ポインタとかも割とハードレベルから説明してる
26:TXA21EFPa.net 23:42
>>24
世の中には理解力の高い初心者というのもいてだな
32:TPvTEnS5M.net 23:45
>>24
printfとだけいきなり言われてもwindowsにはわからんのです
でもwindowsにstdio.hという名前の説明書を渡すとwindowsはprintfを理解し、実行してくれます
というわけでwindowsに説明書を渡しましょう
#include

ってことだろ
無駄な話多いけどかなり有能だぞ

44:Ueh92g4md.net 23:58
>>18
>printf関数は、C言語自体の機能ではありません。
ANSI C標準規格にないって意味なの?ちゃんと?

>ただprintf関数を記述しただけでは、動かないのです。
パソコンなら普通は動きます

>コンパイラにprintf関数の説明書
コンパイラにprintf関数の説明書とは具体的に何?

>#includeはprintf関数などの準備をする命令なので
違います

>プログラムが実行されてしまった後では、説明書を渡しても手遅れなのです。
プロトタイプはコンパイルのためにあるのであって、
プログラムのためと言っているこの説明は誤り

ドヤ顔でほぼ全て間違ってる神文章

45:LVyAIct00.net 00:00
>>44
難癖でワロタ
46:TGBI70Xy0.net 00:00
>>44
アスペかよ
48:AHHtsvLDM.net 00:02
>>44
さすがに逆張りがすぎる
日本語で説明し始めたらちょっと待ってそれ何語で話してるわけ?とかツッコミ入れそう
64:MnnWQhD3d.net 00:28
>>18
>The output from the preprocessor contains the output already generated, followed by the output resulting from the included file, followed by the output that comes from the text after the ‘#include’ directive.

つまり#include ファイル名というのは、マシン語を作る前の処理段階で、ソースファイルを

(#includeより前の内容)
(includeファイルの中身をそのままここに入れる)
(#includeより前の内容)

に置き換えるって意味だぞ
ただそれだけの意味だぞ?

「ファイルの内容に書いている内容がinclude列とただ単に置き換わるだけだぞ??

なぜこの程度のことを説明しないんだ???

たったこれだけのことをおまじないとか言って説明しない意味は???
>>18みたいに嘘つく理由は???

「その一行を、ファイルの内容で置き換えます!」
すまん、の意味すら普通の人は理解できないのか???

65:LVyAIct00.net 00:29
>>64
ファイルの中身説明しないとおまじないと大差ないかと
7:hTmbg12R0.net 23:29
gccならincludeしなくてもprintf使えるしな
12:ZJ3HqSpgp.net 23:31
意味はあるけどとりあえず書いときゃ問題ないし、
深く理解したいなら中身を見てみて、ってだけでしょ
13:JwFoXARo0.net 23:32
後半でなんか習った気がするけどガチでおまじないしか覚えてない
14:3cHDOoMC0.net 23:32
stdlib.hの人気のなさ
22:TPvTEnS5M.net 23:39
>>14
絶対値くらいしか……
34:3cHDOoMC0.net 23:45
>>22
assert.h
ctype.h
stdarg.h
stddef.h
stdlib.h
stdio.h
string.h
time.h
この辺は必須じゃないの?
16:GUQlE/Ax0.net 23:33
printfやscanfなどを使えるようにするためのもの
19:akQX08gD0.net 23:36
関数やったらわかるだろ
20:6LbvJCb5r.net 23:37
いきなりシステムコールとか言われても挫折する自信あるしおまじないでいいだろ
21:/ioCJQoM.net 23:38
おまじないって書いてある本は買わなくていいぞ
23:6LbvJCb5r.net 23:39
gccでコンパイルしたら実行ファイルが出来るのも呪文じゃん…
25:HL/2FShbM.net 23:42
簡単なことなのに難しい言い回しする人いるよね!
28:hTmbg12R0.net 23:43
>>25
厳密に説明しないと袋叩きにされる文化のジャンルもあるからしゃーない
27:fyOVAHzU0.net 23:43
最初にやるようなコード関数宣言しないし…
おまじないでもいいよ最初は
30:PhKHzT0a.net 23:44
プログラミングの学習は「実感できるか」がすべて
“おまじない”は実感の機会を減らすゴミ
簡単に「○○を使うために読み込んでます」くらいでいいから
どんな感じの働きをしているのかは把握させておくべき
頭に不明点があるとそれがしこりになって学習を妨げる
33:TPvTEnS5M.net 23:45
無駄というか初学者にはよくわからん話か
36:3cHDOoMC0.net 23:46
windows.hもあるんだぞ
38:3cHDOoMC0.net 23:47
デストラクタをvirtual宣言しない無能
39:ddEPX7ND0.net 23:49
変数の説明をこれぐらいしてくれればポインタも理解しやすい

↓サイトより引用
前項で考えたことを実現する機能がC言語には存在します。それが、変数です。
変数と聞くと、数学を思い出してイヤになる人も多いかもしれませんが、
プログラミングの変数と、数学の変数とは、全くの別物です。

変数とは、数値を保存しておくためのメモリ領域に名前をつけることです。
これ、ほとんどの入門書では、数値を入れておく箱と説明しますが、
こんなのは、誰もコンピュータに触ったことがなかった時代の説明方法でしょう。
コンピュータをそれなりに使っている人には、メモリと言った方がすっきりします。

コンピュータのメモリとは、横1列に膨大に並べられたロッカーのような構造です。
ロッカーの端っこから、1つ1つに番号がつけられています。
そして、コンピュータで扱われる数値は、そのロッカーのどこかに入っています。

普通ならば、そのロッカーの番号を元に、数値を入れたり出したりするのですが、
毎回毎回、長ったらしい番号をつかっていては面倒なことこの上ありません。
皆さんも、7桁の社員番号でロッカーを区別したくはないだろうと思います。

そこで、それぞれのロッカーに、名前をつけておくことにします。
こうすれば、名前を見ることで、それが何のためのロッカーなのかすぐにわかり、
また、扱いもとても簡単になると言うわけなのです

40:aYi5wCfr0.net 23:49
入門書の次の本「みなさん!よく頑張ってC言語の入門書を読み終えましたね!とってもえらいです!
次はC言語でWindowsで動くアプリを作ってみましょう!それではまずint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstanceビーガービー」
41:fyOVAHzU0.net 23:50
苦Cより明解派
42:hTmbg12R0.net 23:52
苦Cもscanf使う時にアドレス指定子の説明は後回しになってるからそんなんでいいと思うわ
構成がとっちらかるしね
おまじないって言葉自体が嫌なら表現変えればいいね
43:PhKHzT0a.net 23:53
昔読んだ「配列が何故0から始まる?」みたいな質問から始まって
「分からんお前もこの本を読み終わる頃には理解できるぞ」って書いてる本が分かりやすかったが
古い本だから名前忘れた
47:JII05J0C0.net 00:02
C言語は有望な言語だが人様にCを教えようとするカスはC11はおろかC99すら一ミリも知らなそうだから嫌い
49:1CpEuyHg0.net 00:02
using namespace std;はあまり槍玉にあからないよな
50:JII05J0C0.net 00:02
>>49
それはC言語ではない
51:0O2oS3mC0.net 00:04
>>49
これ絶対使いたくないんだけど
名前衝突したらどうすんの
54:1CpEuyHg0.net 00:07
>>51
ビジネスロジッククラス()は名前ぶつけない自信があるんじゃないの、しらんけど
53:COKM6/7a.net 00:07
とりあえず初心者はC#→C→C++→C#の順で
3年くらいかけて勉強すれば良いよ
55:JII05J0C0.net 00:08
Linuxの入門書にはファイルディスクリプタについて書いてあるのにプログラミングの本がIOの説明を忌避するのはよく分からんな
56:3LTVbAKD0.net 00:08
BASICで挫折した俺よりマシ
57:COKM6/7a.net 00:09
>>56
BASIC系の言語は「初心者でも理解しやすい!」を売りにした
クソ読みにくく書きにくい言語だから
58:54VmFYlW0.net 00:12
ポインタわかるかどうからへんでセンスあるか分かる
59:BsG4aBkY0.net 00:12
おまじないはマジ無い

VIPカテゴリの関連記事