トップページ⇒tech
1001コメント295KB

C の超カンタンなことなら漏れに聞け

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
漏れは27才、、、今まで1ヶ月一生懸命Cを勉強してきた、、、
他の言語はHTMLしかできないが、例のスレがウイルスに犯されているのをみかねて、立ち上がった。
変数宣言、入力、出力、演算、条件文、繰り返し文、関数、ファイル処理、ポインタ、構造体、と入門レベルなら一通りできる。
あと構造体のチェイン、関数のポインタ、ビットシフト、共用体がわからんが、これもあと一ヶ月くらい勉強すればわかるだろう。
このスレでは、漏れが基礎レベルの質問に答える。しかし、俺様が5分以上考え込む難問は禁止だ。
0002デフォルトの名無しさんNGNG
v(^・^)v
0003デフォルトの名無しさんNGNG
コンソールでの文字入力、どうしてますか?
0004デフォルトの名無しさんNGNG
voidってなんですか?
0005デフォルトの名無しさんNGNG
>>3
まず、Cでは、「文字」と「文字列」は別の物として扱われる。
「文字」は一文字、「文字列」は配列を用意して、
そのなかにちまちま文字をはめ込んだものだ。
また、まぎらわしいことに、「文字列定数」とかいうものもある。が、いまはとりあえず、文字の入力についてだけ説明する。

とりあえず、次のコードをコンパイルして実行する。
#include <stdio.h>
int main(void)
{
 int ch; // int 型の ch を宣言。
 ch=getchar(); // getchar で一文字読み込み、ch に代入する。
 putchar(ch); // putchar で、ch に読み込んだ文字を出力する。
}

上のコードを実行すると、プロンプトが出て、文字を入力するように待機しているので、たとえば A と入力しEnterを押せば
A
と出力される。
見た目はこれだけだが、
 (1)なぜ ch をint で宣言したのか(なぜgetcharをintで受けるのか)
 (2)もしAAと2文字入力してからEnterを押すとどうなるのか(バッファリングの問題)
 (3)ch の中身は本当は何が入っているのか
など細かく見ていくとおもしろいのだが、入門スレなので大胆に省略する。
00061はNGNG
天才?
0007Kusakabe YouichiNGNG
In article >>5, デフォルトの名無しさん/5 wrote:
> また、まぎらわしいことに、「文字列定数」とかいうものもある。

「リテラル」は「定数」って訳すと混乱する場合も多いので、
そう訳さない場合もけっこうありますよ。


> {
>  int ch; // int 型の ch を宣言。
>  ch=getchar(); // getchar で一文字読み込み、ch に代入する。
>  putchar(ch); // putchar で、ch に読み込んだ文字を出力する。
> }
>
> 上のコードを実行すると、プロンプトが出て、文字を入力するように待機しているで、

プロンプトがでるってどんな環境の場合だろう?

たとえば A と入力しEnterを押せば
> A
> と出力される。

Enterはどこ行っちゃったの?

>  (1)なぜ ch をint で宣言したのか(なぜgetcharをintで受けるのか)

なぜ変数名が「ch」なのか? てのも気になりますね。
0008デフォルトの名無しさんNGNG
>>1
糞壁は気にしないで、続けてね。
0009デフォルトの名無しさんNGNG
クソスレ立てる1はウザイが、
嬉々としてしゃしゃり出てくる7には、
ウザイを通り越してむしろ愛すら感じる(;´Д`)ハァハァ
0010デフォルトの名無しさんNGNG
「C の超カンタンなことなら漏れに聞け」
うむ、Kusakabeが嬉々として食いつくタイトルだな。
ご苦労 >>1
0011>なぜ変数名が「ch」なのか? NGNG
わかんないの?

>1
才能を感じる♪
0012Kusakabe YouichiNGNG
In article >>7, Kusakabe Youichi/[email protected]/7 wrote:
>「リテラル」は「定数」って訳すと混乱する場合も多いので、
>そう訳さない場合もけっこうありますよ。

わたしならこんなめんどうな回答はしませんね。
こう答えます。

13ペイジを見ればわかりますよ?:)
0013Kusakabe YouichiNGNG
In article >>9, デフォルトの名無しさん/sage/9 wrote:

> クソスレ立てる1はウザイが、
> 嬉々としてしゃしゃり出てくる7には、

「ききとしてしゃしゃりでて」きたことにすると、うれしいのですね? :)
0014デフォルトの名無しさんNGNG
Kusakabeって何人いるんだ?
0015デフォルトの名無しさんNGNG
>>1
はい、うざいけど気にせず続けてね。
0016Kusakabe YouichiNGNG
In article >>12, Kusakabe Youichi/12 <[email protected]> wrote:
> 13ペイジを見ればわかりますよ?:)

「よ」の後ろがだめですね。(まるでMS-IMEユーザー)
0017デフォルトの名無しさんNGNG
>>4
void というのは「何も無い」という状態を、積極的に宣言するものだ。たとえば
 int main() // () の中が空白
でも、引数無し、というのは見てわかるが、
 int main(void) // () の中に void がある
とかいたほうが、
「引数はありませんよ」
と明らかに示しているのでわかりやすい。
また、もし間違えて、この関数を引数つきで呼んでしまったときは、コンパイラーで判断して、エラーを出せる。

また、関数の返り値が何も無い、ということを示すときにも使う。

(1)void foo (void) //foo という関数は、引数が無くて、返り値も無い
(2)int bar(void) // bar という関数は、引数が無くて、int 型の返り値を返す

このように使う。また、void 型の変数宣言というのもあるらしいが、そこまでよく読んでいないので省略。

ちなみに、ネットでvoidというハンドルを使う者もまれにいるらしい。これは「void」という名前ではない。
「名前」欄を空白にせずに、わざわざvoidと書き込むということは、
「名乗るほどの名前じゃありやせん」
という意味、つまり、2ちゃんでの「名無しさん」とかと同じ意味である。
0018Kusakabe YouichiNGNG
In article >>16, Kusakabe Youichi/9 <[email protected]> wrote:
> 「よ」の後ろがだめですね。(まるでMS-IMEユーザー)

わたしがバカにするのはATOKだけですね。
0019デフォルトの名無しさんNGNG
Kusakabe Youichiネタはウザイので、
他でやってください。
0020Kusakabe YouichiNGNG
In article >>17, Kusakabe Youichi/17 <[email protected]> wrote:
> ちなみに、ネットでvoidというハンドルを使う者もまれにいるらしい。これは「void」という名前ではない。

そんなにこわがらなくてもー :)
0021デフォルトの名無しさん NGNG
不定と処理系依存ってどう違うの?
0022デフォルトの名無しさんNGNG
>>21
不定は文字どおり、定まってない。決まっていない。
処理系依存は、(実装が)処理系によって違ってる。
ってことじゃないの?
0023仕様書無しさんNGNG
>>21
不定は処理系にかかわらずどんな処理が行われるか、どんな結果が返ってくるか決められていない。
処理系依存はOSとかCPUとかで動きが違う。
0024デフォルトの名無しさんNGNG
NULLと'\0'ってどう違うんですか?
0025デフォルトの名無しさんNGNG
>>21
不定というのは、本当に何がはいるかまったくわからない、ということ。
処理系依存は、ある特定の処理系だけつかうなら、その動作が予想できるけど、別の処理系に持っていったとき、どういう動作になるかわからないもの。
0026デフォルトの名無しさんNGNG
ナァルッ
0027デフォルトの名無しさんNGNG
ヒープってなんですか?
0028デフォルトの名無しさんNGNG
スタックってなんですか?
0029デフォルトの名無しさんNGNG
>>24
同じ。しかし、「0」と書くより
「\0」
と書いたほうが「文字としての0」という雰囲気をもっている。文字列の終端を見つけたいときなど
「0まできたらループ終了」
とかいうコードを書くと
「この0はいったいなんだ?」
と一瞬迷う。「\0」にしておけば、文字としての0、つまり、文字列の終端がきたらループを抜けるんだな、とすぐわかる。
0030デフォルトの名無しさんNGNG
>>27
知らないので省略

>>28
ここ↓わかりやすいぞ
http://www2.airnet.ne.jp/sardine/complang/Forth.html
0031デフォルトの名無しさんNGNG
>>30
ポーランド人じゃないので
そんな記法受け付けません。
0032デフォルトの名無しさんNGNG
ポインタにNULLを代入した場合
「何もさしていない」って意味っしょ?
0033デフォルトの名無しさんNGNG
>>32
http://www.catnet.ne.jp/kouno/c_faq/c5.html#0

とりあえずFAQ読め。
0034デフォルトの名無しさんNGNG
malloc関数の仕組みを教えてください。
ヒープのを知らないのでは答えられないと思いますが。
0035デフォルトの名無しさんNGNG
Cの開発に携わったのはリッチーだけで、カーニハンは「プログラミングC」の執筆に携わっただけというのは本当ですか?
0036デフォルトの名無しさんNGNG
>>34
>答えられないと思いますが。

なら、聞くなよ。
0037>33のリンクNGNG
変な日本語だ。内容もちょっとヘンなかんじだ。
0038デフォルトの名無しさんNGNG
>>37

ナルをヌルとか言っているし。
0039デフォルトの名無しさんNGNG
>>34
動的に必要なメモリを確保する関数だ。
それ以上は知らん。

>>35
知らないので省略。
0040デフォルトの名無しさんNGNG
>>37
じゃ、原文で読めよ。
http://www.eskimo.com/~scs/C-faq/top.html
0041デフォルトの名無しさんNGNG
>>40

sageるのなら書き込むなよ。
0042デフォルトの名無しさんNGNG
ナルとニルとヌルの違いを教えてください。
0043デフォルトの名無しさんNGNG
>>41

sageをなんか勘違いしてないか?
0044デフォルトの名無しさんNGNG
>>43

sage == ネタ

これもな(w
0045デフォルトの名無しさんNGNG
>sage == ネタ

君の脳内ルールを、ここで語られても困りますが。
0046デフォルトの名無しさんNGNG
>>45

君にはネタという言葉が通じないのかな?
0047デフォルトの名無しさんNGNG
>>42
ナル null ほとんどの場合、0 と等価
ニル nil Lisp用語 なにも無いという意味
ヌル null ナルの日本人用読み方
0048デフォルトの名無しさんNGNG
これはネタスレだよね?
0049デフォルトの名無しさんNGNG
>>45

間抜けなことを書いてしまったからネタということにしたいのでしょう。
追求しないのが大人の態度。
005042NGNG
>>47
>ナル null ほとんどの場合、0 と等価

ほとんどじゃない場合は?
0051デフォルトの名無しさんNGNG
>>49

無視

>>50

不定
0052デフォルトの名無しさんNGNG
>ナル null ほとんどの場合、0 と等価

100点満点で10点
005342NGNG
>>51
ヌルの値じゃなくて、定義は何ですか?
どういうときに使えばいいの?
0054デフォルトの名無しさんNGNG
>>53

空(から)
0055Kusakabe YouichiNGNG
In article >>17, デフォルトの名無しさん/17 wrote:
> このように使う。また、void 型の変数宣言というのもあるらしいが、

はつみみです。
0056Kusakabe YouichiNGNG
In article >>18, Kusakabe Youichi/18 <[email protected]> wrote:

> In article >>16, Kusakabe Youichi/9 <[email protected]> wrote:
> > 「よ」の後ろがだめですね。(まるでMS-IMEユーザー)
>
> わたしがバカにするのはATOKだけですね。

わたしはATOKを馬鹿にしたりしたことはいちどもないですよ。
(使うやつは馬鹿だろうけど)
005742NGNG
>>54
空(から)と0は等価ですか?
0058Kusakabe YouichiNGNG
In article >>20, Kusakabe Youichi/20 <[email protected]> wrote:

> In article >>17, Kusakabe Youichi/17 <[email protected]> wrote:
> > ちなみに、ネットでvoidというハンドルを使う者もまれにいるらしい。これは「void」という名前ではない。
>
> そんなにこわがらなくてもー :)

「てもー」なのに「:)」が付いてるんですか?
0059デフォルトの名無しさんNGNG
>>57

ほとんどの場合等価です。
006042NGNG
>>59
ほとんどじゃない場合は?
0061Kusakabe YouichiNGNG
In article >>24, デフォルトの名無しさん/sage/24 wrote:

> NULLと'\0'ってどう違うんですか?

全然ちがうものですよ。

125ペイジ 「5.1.3 NULLと'\0'と0」 を読みましょう。
0062デフォルトの名無しさんNGNG
>>60

不定
006342NGNG
>>60
不定と0は等価ですか?
0064デフォルトの名無しさんNGNG
>>63

不定なので比べようがありません。
006542NGNG
>>63

間違えた
× >>60
○ >>62
0066デフォルトの名無しさんNGNG
>>65

http://dictionary2.goo.ne.jp/ej/voice/N/02060587.wav
これを何度も聞いてください。そのうち悟りを開けます。
0067デフォルトの名無しさんNGNG
>61
本もってたらここで
わざわざ聞かないって。
0068デフォルトの名無しさんNGNG
whileもforも関数の再帰呼び出しも使わないで繰り返し処理を行う方法を教えてください。
006942NGNG
>>64
nullと不定は等価ですか?
0070デフォルトの名無しさんNGNG
>>69

ということにしたいのですね? :)
007142NGNG
>>70

そういうことにはしたくないです。
0072デフォルトの名無しさんNGNG
これは無限ループなのか
0073デフォルトの名無しさんNGNG
>>68
ifとgotoを使う。
0074デフォルトの名無しさんNGNG
>>71

ではnullと不定は等価ではないということになります。
0075デフォルトの名無しさんNGNG
>>73

あ、そっか。Cにもgotoってあったんだったな。
それさえ使わない方法は無理だよね?
0076デフォルトの名無しさんNGNG
>>68
知らない。
007742NGNG
>>74
nullは不定ではないということですか?
0078デフォルトの名無しさんNGNG
setjmp,longjmp
0079デフォルトの名無しさんNGNG
>>77

その辺は曖昧です。あなたが不定ではないと思えば不定ではないし、不定であると思えば不定だということになります。
008042NGNG
>>79
わかりました。C言語って曖昧なんですね。
0081デフォルトの名無しさんNGNG
>>80

いえ、コンピュータ自体が曖昧なのです。人間が作った物ですから。
0082Kusakabe YouichiNGNG
In article >>67, デフォルトの名無しさん/sage/67 wrote:
> 本もってたらここで
> わざわざ聞かないって。

買えばいいのに。
0083Kusakabe YouichiNGNG
In article >>68, デフォルトの名無しさん/68 wrote:

> whileもforも関数の再帰呼び出しも使わないで繰り返し処理を行う方法を教えてください。

回数分書く。
0084デフォルトの名無しさんNGNG
>>83

あほか。
008542NGNG
>>81
なるほど。
これで、僕の作ったプログラムが動かない原因がやっとわかりました。
僕のせいじゃないってことですね。
0086デフォルトの名無しさんNGNG
>>85

はいそうです。コンピュータの機嫌を損ねないよう、くれぐれも気をつけてください。
0087デフォルトの名無しさんNGNG
>>79
ようは、気の持ち様ということで。
0088デフォルトの名無しさんNGNG
>83
いわれてみれば
それもあるな
0089デフォルトの名無しさんNGNG
>>84
ループのアンロール。
先生にしてはまともな回答。
0090デフォルトの名無しさんNGNG
>>86
わかりました。ありがとうございました。
0091デフォルトの名無しさんNGNG
ループ処理を・・・・なら>>83みたいな答えは不正解になりますよね?
0092デフォルトの名無しさんNGNG
日下部ネタはよそでお願いします。うざい。
0093デフォルトの名無しさんNGNG
>>91
繰り返し処理…
って質問してるからなぁ。
つーか、難癖付けるにしてももう少しエレガントにやっとくれ。
0094デフォルトの名無しさんNGNG
>>91
それを言ったら、再帰もループと言えるのか?
0095デフォルトの名無しさんNGNG
>>94

まあそうだけど・・・・>>83があまりにもくだらなかったので・・・・
0096デフォルトの名無しさんNGNG
あ、いえ、糞壁を相手にしたのがそもそもの間違いでした。ごめんなさい。
0097Kusakabe YouichiNGNG
In article >>93, デフォルトの名無しさん/sage/93 wrote:
> 繰り返し処理…
> って質問してるからなぁ。

回数分繰り返してかくんだから「繰り返し処理」ですよ。
0098デフォルトの名無しさんNGNG
>>97

無限ループにしたい場合はどうするの?
0099デフォルトの名無しさんNGNG
みなさん、反応しなくていいですからね。
0100デフォルトの名無しさんNGNG
>>91
インラインアセンブラでジャンプすればー
0101デフォルトの名無しさんNGNG
>>97
日本語書けとは言わないから、理解はしてくれ、偽カベさん。
91が「ループ処理を…なら不正解」と書いたのに対して、
「繰り返し処理…って質問してるからなぁ」と答えたんだが?
ついでに「難癖付けるにしてももう少しエレガントに」とも書いたな。
■ このスレッドは過去ログ倉庫に格納されています