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

C言語なら、俺に聞け! <18>

■ このスレッドは過去ログ倉庫に格納されています
0001きょうはいいテンキーです。日下部陽一NGNG
漏れは38才、21年間プログラムを一生懸命作ってきた。
いろいろな言語を極めたが、一番手になじむのはCだった。
Cのことならぜんてわかるから、疑問な点があったら漏れに聞け。

だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。

・comp.lang.c Frequently Asked Questions
http://www.eskimo.com/~scs/C-faq/top.html

・C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html

Cプログラマならこれを買っとけ。
・プログラミング言語C(K&Rと呼べば通だ)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/yfcbookshelf-22/250-3950205-1475419

K&Rで挫折するような救いがたいやつはこれでも読め
・作ってわかるCプログラミング(アヒル本と呼べば通だ)
http://dennou.gihyo.co.jp/books/void_c/
http://www.amazon.co.jp/exec/obidos/ASIN/477411328X/249-4698746-2014711

推薦図書/必読書のためのスレッド PART3
http://pc.2ch.net/test/read.cgi/tech/1016722820/

・前スレ C言語なら、俺に聞け! <17>
http://pc.2ch.net/test/read.cgi/tech/1019372139/l50
0083デフォルトの名無しさんNGNG
>>80 実はLightWaveに、2マックロクロスケ
>>82 場所間違ってない?
0084デフォルトの名無しさんNGNG
>>82
::なんて演算子はCにはないはずですよ?と言ってみるテスト。
0085初心者にもなってないNGNG
C言語を勉強してプログラミングしたい思っているのですが何が必要ですか?
他のスレ見て「コンパイラっていうのが必要なのかな〜」って
判断しちゃったんですけどそれでいいんですかね。
よくわからないけど私が持っているプログラミングツールっぽいのは
VBってのとC++なんですけど友達が勝手にくれたものだから
これでC言語でプログラミングできるのかわかりません。
0086デフォルトの名無しさんNGNG
> VBってのとC++なんですけど友達が勝手にくれたものだから

VBはわかるがC++って何よ?
0087デフォルトの名無しさんNGNG
>>85
VBはその友達に返すか捨てなされ。
で、C++をもらったってどういうこと?
008885NGNG
ごめんなさい
VisualC++6.0でした
これでC言語でプログラミングできますか?
0089デフォルトの名無しさんNGNG
>>88
できる。


(へぇ・・・あんな高いものをくれたんだ・・・・・・いい人だねぇ)
0090デフォルトの名無しさんNGNG
>>89
多分VS.NETを買ったから(以下略
009182NGNG
ひょえー失礼しました。。。
C言語スレでしたね。ここ。。。
申し訳ないです。

もう少し悩んで分からなかったらC++スレへ移動します。。。
0092デフォルトの名無しさんNGNG
>85
通報しますた。
0093デフォルトの名無しさんNGNG
>>91
いや、別にいいけど。
0094デフォルトの名無しさんNGNG
>>91
ちなみに友達に貰ったといいますが、
この製品はライセンスの譲渡はできません。
したがってそれを使おうとしているあなたは、
違法行為を犯していることになります。
製品は新規に買いなおす必要があるでしょう。
または、最近発生した素晴らしい手段ですが、
MX上で公開することによって、この罪は問われなくなるでしょう。
0095デフォルトの名無しさんNGNG
>>94
誰にレスしてんだよ。
それと例の人の友達がライセンスを持っているとは限らないよ?
未開封パッケージをもらったのかもしれないよ?
0096デフォルトの名無しさんNGNG
はあ、未開封?
おまえ、せっかく買ってきたのに未開封でいられるかっつーの。
おれなら家に帰る前に電車の中で既に空けてるね!
0097デフォルトの名無しさんNGNG
>>96
はあ、電車の中で開けるって?
お楽しみは家に帰ってからだろ!
0098デフォルトの名無しさんNGNG
おまえは小学生か。
家に着くまで待てよ
009997NGNG
といいつつ、それが本なら電車の中で開けて読んでしまう。
0100デフォルトの名無しさんNGNG
どーゆー論議だよ。。。(汗

まぁ>>85は悪いコトしてるからね。
ネタだったらいいけど
マジでやってる厨房なら気をつけた方が良いよ。
0101デフォルトの名無しさんNGNG
お、っていうか俺100じゃんヽ(´ー`)ノ↑
0102デフォルトの名無しさんNGNG
>>100
まあまあ、決め付けなくても良いんじゃない ? ちょっと前に、俺の知ってる奴が
Office2000 Premium 持ってたから、なんでそんなもん持ってんの ? って聞い
たら、「オヤジが、Office2000 Professional 買おうとして間違えたんだよ。
で、交換してもらおうとお店に行ったら Office-XP があったから、そっちを
買っちゃった。お前これ要るか ? と聞かれたから、もらった。」と言う、実話も
あるからな。
0103デフォルトの名無しさんNGNG
>>68
Win2kではちゃんと全て表示されますね。
010485NGNG
レスしてくださった方ありがとうございます
VisualC++でがんばってプログラミングします。

あとソフト自体はビニールで梱包してあって開封はしてないみたいだったんですけど
まぁ大丈夫ですよね
心配してくださった方々ありがとうございます
0105デフォルトの名無しさんNGNG
>>104
なんだ、そうなのか。
がんばれー。
0106デフォルトの名無しさんNGNG
>>104
まあ違法かどうかの真相はおいておいて・・・・

勉強程度ならコマンドラインからVC++のコンパイラを使った方がいいよ。
0107デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
0108デフォルトの名無しさんNGNG
>>106
Win9Xだときついよ、それ。
bash入れろとはいわんが、せめてcmd.exeくらいの便利さがないとね..

チュートリアルとか入ってるから、それをやるのもヨシ。
0109106NGNG
>>107
誰に対して言っているんだろ・・・
私かな・・・いっぱいファイルができてうっとうしいからそう言ったんだけど・・・
0110107NGNG
スマソ誤爆した。
0111デフォルトの名無しさんNGNG
これからCをやろうと思う人がまずここにくるってのが間違ってる。とてもおかしい。そう思わないか? 98よ
0112デフォルトの名無しさんNGNG
まぁ、コンパイラを選ぶ時点からCとの闘いは始まってるってことで。
0113デフォルトの名無しさんNGNG
VBとVC++をただで?友達が勝手にくれた?100%ウソにきまってんじゃん
0114デフォルトの名無しさんNGNG
あんなもの最初はコピーを使うもんだ
買うなんて無駄

人に作ったものを見せるようになってから買えばいい
0115デフォルトの名無しさんNGNG
>>85はゲイシと友達のタモリ。
…などと戯言を吐いてみるテスト。

ところで値を返す必要の無い関数を、とりあえずint型にしといて0を返すのは間違い?
人から「意味の無い値を返すな、void型にしる!」と言われたんだけど、
昔「とりあえずintにしとけ」とも聞いてるんで混乱しとります。
0116デフォルトの名無しさんNGNG
最初はフリーコンパイラを使うもんだ
買うなんて無駄
0117デフォルトの名無しさんNGNG
とりあえずなら、良いんでない?
0118デフォルトの名無しさんNGNG
>>115
&&をif文の代わりに使うことがあるならvoidはまずいな。
俺は&&をifの代わりにするなんて嫌だけど。
そういえばkage.exeのソースにはたーくさんあったな。
0119デフォルトの名無しさんNGNG
>>118
PERLにはそういう習慣があるから、そっちから来た人は好んで使うかも。
0120デフォルトの名無しさんNGNG
>>115
戻り値があると、何か意味のあるものが返ってくるような感じがするので、
意味の無い戻り値(always 0等)は嫌。

最終的には何か意味のある値(処理成功/失敗)を返すか、もしくは
voidにしてしまうことをお勧めします。
0121115NGNG
不要でも0を返す理由は、
・「void」は特殊であり「int」の方が自然な型である
 ⇔ (反論)意味も無い値を返すのは不自然。

・エラー処理を追加する等の、将来の拡張への備え
 ⇔ (反論)XPの「シンプルな設計」に反する。

だったような気が。
0122デフォルトの名無しさんNGNG
>>121
> ・エラー処理を追加する等の、将来の拡張への備え

今まで戻り値ありだったものを無しにするのはまずいけど、
なしだったものをありにするのはそれほどまずくないと思うんだけどどうだろ?
0123デフォルトの名無しさんNGNG
俺は基本的に戻り値のない関数はboolにして常にtrueを返してる。
呼び出し側も、無意味とわかりつつ戻り値チェックする。
0124最近の環境なら気にはならんと思うがNGNG
>>122
プロトタイプの変更
 ↓
ヘッダ書き換え
 ↓
#include してるモジュールは全て再コンパイル
 ↓
(゚д゚)マズー
0125122NGNG
>>124
そうだプロトタイプがあった(汗
0126デフォルトの名無しさんNGNG
>124
 ↓
#include してるモジュールは全て再コンパイル
 ↓
そうだ、例外を投げよう
 ↓
もっと(゚д゚)マズー
0127デフォルトの名無しさんNGNG
"unsigned double"なんて型は存在するのですか?
グーグルすると国内に数件、本気で使ってるような感じのサイトがあるのですが。
0128デフォルトの名無しさんNGNG
>>127
doubleに符号がある以上存在しない理由は無い気がするけど。
メリットがあるかどうかは別として。
あるコンパイラだとちゃんと警告出してくれるとか?
0129デフォルトの名無しさんNGNG
>128
vcでは意味がねえよと警告が。gccでも警告だかエラーだかが。
0130デフォルトの名無しさんNGNG
負値は絶対使わない! ってな主張をコードに残したかったのでは。
0131デフォルトの名無しさんNGNG
ヒットしたサイトより引用。これの答えがunsigned doubleらしい。
>次の値の型を答えなさい。
>1.0U

vcいわく「サフィックスが無効です(w」

0132デフォルトの名無しさんNGNG
double の有効桁数がどうしてもあと1ビット必要だったとか...。
0133デフォルトの名無しさんNGNG
>>132
そのプログラマ必死だな(藁
0134デフォルトの名無しさんNGNG
>>132をみて
unsigned long doubleにしてみたら
vcでは何も文句いわれなかった…。
0135デフォルトの名無しさん NGNG
自宅でCの勉強をしたいのですが
フリーのコンパイラでお勧めの物があったら教えてください。
0136デフォルトの名無しさん NGNG
自宅でCの勉強をしたいのですが
フリーのコンパイラでお勧めの物があったら教えてください。
0137デフォルトの名無しさんNGNG
>>136
過去ログ読めクソやろう。
0138デフォルトの名無しさんNGNG
>>135と>>136は別人ですよ。
0139デフォルトの名無しさんNGNG
>>135-136
ゴールデンウィーク━━━━(゚∀゚)━━━━━!!!
0140デフォルトの名無しさんNGNG
マジか(w
0141デフォルトの名無しさんNGNG
cよりperlをすすめる
0142デフォルトの名無しさんNGNG
もしも>>1のテンプレートに余裕があるのなら、フリーのコンパイラを落とせるサイトへのリンクを追加したら?
それでも質問してきそうだけど。
0143デフォルトの名無しさんNGNG
>>142
つぅか無かったのね・・・。
0144デフォルトの名無しさんNGNG
>>142
はげ同。
日下部さんの本にリンクはったり、くだらない文で行数を消費するくらいなら、フリーコンパイラーへのリンクを
はったほうがよっぽどCの質問スレ向きですね。
パート18まで進んでいるのに、>>1のテンプレがぜんぜん洗練されてないのは問題では?
0145デフォルトの名無しさんNGNG
書くとすればWin用のBorlandかLSI-C試食版か?
UNIXのgccやccは最初から入っているだろうから書くまでもないよね。
Macとかはしらん。
0146145NGNG
あ、、ccはフリーじゃねぇや・・
0147デフォルトの名無しさんNGNG
>>145
OS XはObjectiveCだかJavaだかベースの開発環境付いてくるらしいです。
0148デフォルトの名無しさんNGNG
bccは癖があるしなあ。

cygwinのgccとかegsも立派な選択肢だ。
入れといてもらおう。
0149デフォルトの名無しさんNGNG
つーか、>>2-5ってな感じで下に伸ばせや。1のメッセージは必須だから。
0150デフォルトの名無しさんNGNG
Win32用の開発環境のみ。

gcc-cygwin
http://www.redhat.com/software/tools/cygwin/
gcc-mingw
http://www.mingw.org
Digital Mars C++
http://www.digitalmars.com/
Open Watcom
http://www.openwatcom.com/
Borland C++ Compiler 5.5.1
http://www.borland.co.jp/cppbuilder/freecompiler/

------------------------ ライセンスや機能などに問題あり ---------------------
Microsot C/C++ 13.0.9466(VC.NET)
http://www.microsoft.com/japan/msdn/netframework/downloads/
LCC-Win32
http://www.cs.virginia.edu/~lcc-win32/
CINT
http://root.cern.ch/root/Cint.html
めじろ++98
http://www.vector.co.jp/soft/win95/prog/se075910.html
0151150NGNG
知ってる奴は、思ったより少なかった。
書き漏れもありそう。
0152デフォルトの名無しさんNGNG
めじろってまだ存在するのね・・・。
0153デフォルトの名無しさんNGNG
>>150
並べてある順番に何か意図を感じる
0154厨房のしそうな質問NGNG
>>150のうちどの処理系がいいんでしょう?


お勧め!マークでもつけたほうが…

とりあえずBCCに一票。日本語だし…
0155デフォルトの名無しさんNGNG
どの処理系?
んなもんgccと言いたいが、初心者に勧めるならOpen Watcomだな。
IDEついてるし。
0156デフォルトの名無しさんNGNG
DMCはATL/MFC(ライセンス上も)利用可能
WatcomはIDE&デバッガ搭載(おまけにFortran)
bccは日本語&解説サイトが豊富

どれもSJIS通る。
最適化ならWatcomに一日の長がある

VC.NETはSTLPortと最新のPlatformSDKがあれば、
フルスペックのウインドウズ開発環境として利用可能(総計1G弱落とす事になる)
.NETのManaged C++もいける。
0157初心者にもなってないNGNG
C言語を勉強しようと思っているのですが
どの本がわかりやすいですか?
初心者にもなっていない人向けで、わかりやすいものがいいのですが。
オススメの参考書をおしえてください。
0158デフォルトの名無しさんNGNG
>>157
>>1のリンクに専用スレがあるよ。
0159デフォルトの名無しさんNGNG
>>155,156
名前欄読めよ…
0160デフォルトの名無しさんNGNG
>>159
読んだと思うよ(笑)
0161デフォルトの名無しさんNGNG
初学者には BCC Developer + bcc32 をお勧めしたい。
0162デフォルトの名無しさんNGNG
しつもーん!
voidな関数において途中で処理を止めたいときは
・・ループで言うbreakみたいのは・・
return;でいいの?それともexit(NULL);使ったほうがいいの?
どうなの?
0163デフォルトの名無しさんNGNG
>>162
おーい、exitしたらプログラムが終了してしまうぞー
それとexitの引数はint型。

return;が正解。
0164デフォルトの名無しさんNGNG
return;
0165デフォルトの名無しさんNGNG
exit(NULL)です。がんばってください。
0166162NGNG
ごめん。ちょっと間違えた。voidなmain関数での話です。
0167デフォルトの名無しさんNGNG
>>166
mainも関数。
returnを使う。exitでもいいけど。
0168デフォルトの名無しさんNGNG
>>162
abort() しとけ。
0169デフォルトの名無しさんNGNG
>>168
今それ書こうとした・・・
0170デフォルトの名無しさんNGNG
あさって(0);だ
0171162NGNG
>>167
ふむ。了解デシ。returnします。

>>163
関数がvoidでもexitにint渡すの?
exitを解ってないかもな質問をしてみたり。
0172デフォルトの名無しさんNGNG
>>171
exit()の引数がint型なんだからしかたない。
0173デフォルトの名無しさんNGNG
exitはプロセスを終了して、OSにリターンコードを返すから、
どこで呼ぼうとかまわない。
returnは手続きで、exitは関数
0174162NGNG
>>173
ぉぉ。その説明で納得っす。わかりやすい説明ありがとうです。
0175デフォルトの名無しさんNGNG
>>174
分かっていると思うけど、voidとNULLは違うから。
NULLを渡すということは0を渡すことと同じ。
0176デフォルトの名無しさんNGNG
voidってANSIが追加したキーワードですよね?
それまではvoidの代わりになんて書いていたのですか?
void型の関数とかvoid *とか。
0177デフォルトの名無しさんNGNG
あ、sageちゃった・・・
0178デフォルトの名無しさんNGNG
voidはANSI以前からあったよ。BSDのpccの拡張。
void *みたいなのはchar *で代用してた。
0179デフォルトの名無しさんNGNG
>>178
ありがとうございます。
enumみたいに以前からあったんですか。

> void *みたいなのはchar *で代用してた。
なるほど。キャストすればchar *もint *とかになるからね。
0180デフォルトの名無しさんNGNG
>>175
バカ。NULL を必要とするところに NULL 渡すことと 0 を渡すことは同じだけ
ど、int が要求されているところに NULL を渡すことと 0 を渡すことは同じで
ないことがあるぞ。
0181デフォルトの名無しさんNGNG
>>180
ん?NULLって
#define NULL 0
か
#define NULL (void *)0
じゃないの?
0182デフォルトの名無しさんNGNG
>>181
180が言いたいのはたぶん、ポインタとして「0」と書くとnull pointerを表す
約束になっているのでオーケーだが、逆にポインタを整数に変換して特定の値
(例えばゼロ)になるという保証はない、ということだろう。
■ このスレッドは過去ログ倉庫に格納されています