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

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

■ このスレッドは過去ログ倉庫に格納されています
0001SHOW-A息子NGNG
漏れは32才。22年間、父SHOW-Aにプログラムを叩き込まれてきた。
いろいろな言語を極めたが、一番漏れになじんだのはCだった。
Cのことなら父をも超えた。疑問な点があったら漏れに聞け。

便所とメシ食ってる時以外は暇だが、いちいちFAQに載った質問に応えるほど暇じゃない。
課題丸投げなら別スレにいけ。あと、至急父に仕事を与えてやってください。

コンパイラ、過去ログなどのリンクは>>2-5 あたり
0002SHOW-A息子NGNG
【コンパイラ】
gcc
http://gcc.gnu.org/

【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
0003SHOW-A息子NGNG
【その他】
http://www.cmt.phys.kyushu-u.ac.jp/~M.Sakurai/prog/progf.html
http://www.bloodshed.net/index.html

【注意】
Cmachineは一般的なCと挙動が違いすぎるので動作の保証はできません。
まともな処理系を使いましょう。
0004SHOW-A息子NGNG
C FAQ 日本語訳
http://www.catnet.ne.jp/kouno/c_faq/c_faq.html
comp.lang.c FAQ(英語の原文)
http://www.eskimo.com/~scs/C-faq/top.html
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
推薦図書/必読書のためのスレッド PART 5
http://pc3.2ch.net/test/read.cgi/tech/1027593322/

前スレ <30> http://pc3.2ch.net/test/read.cgi/tech/1030786546/
0005SHOW-A息子NGNG
【過去ログ】
30 http://pc3.2ch.net/test/read.cgi/tech/1030786546/
29 http://pc3.2ch.net/test/read.cgi/tech/1029605182/
28 http://pc3.2ch.net/test/read.cgi/tech/1028495798/
27 http://pc3.2ch.net/test/read.cgi/tech/1027160374/
26 http://pc3.2ch.net/test/read.cgi/tech/1026048820/
25 http://pc.2ch.net/tech/kako/1024/10249/1024918442.html
24 http://pc.2ch.net/tech/kako/1024/10240/1024033400.html
23 http://pc.2ch.net/tech/kako/1023/10230/1023024817.html
22 http://pc.2ch.net/tech/kako/1022/10224/1022402165.html
21 http://pc.2ch.net/tech/kako/1022/10220/1022045622.html
20 http://pc.2ch.net/tech/kako/1021/10214/1021459016.html
19 http://pc.2ch.net/tech/kako/1020/10207/1020756993.html
18 http://pc.2ch.net/tech/kako/1020/10202/1020260813.html
17 http://pc.2ch.net/tech/kako/1019/10193/1019372139.html
16 http://pc.2ch.net/tech/kako/1018/10184/1018453690.html
15 http://pc.2ch.net/tech/kako/1016/10165/1016519243.html
14 http://pc.2ch.net/tech/kako/1015/10152/1015286974.html
13 http://pc.2ch.net/tech/kako/1013/10139/1013990673.html
12 http://pc.2ch.net/tech/kako/1012/10123/1012348974.html
11 http://pc.2ch.net/tech/kako/1009/10094/1009499565.html
10 http://pc.2ch.net/tech/kako/1008/10083/1008300863.html
9 http://pc.2ch.net/tech/kako/1007/10072/1007272267.html
8 http://pc.2ch.net/tech/kako/1005/10058/1005811510.html
7 http://pc.2ch.net/tech/kako/1003/10034/1003418249.html
6 http://piza2.2ch.net/tech/kako/999/999617524.html
5 http://piza2.2ch.net/tech/kako/994/994908590.html
4 http://piza.2ch.net/tech/kako/992/992357382.html
3 http://piza.2ch.net/tech/kako/989/989929288.html
2 http://piza.2ch.net/tech/kako/979/979529893.html
1 http://piza.2ch.net/tech/kako/967/967985026.html
0006デフォルトの名無しさんNGNG
乙〜
0007デフォルトの名無しさんNGNG
zuza
0008デフォルトの名無しさんNGNG
お前らちゃんと寝たのか?
0009デフォルトの名無しさんNGNG
>>1
乙カレサン
0010デフォルトの名無しさんNGNG
>>1
お疲れさま。
0011デフォルトの名無しさんNGNG
新スレage
0012デフォルトの名無しさんNGNG
二次元配列の先頭ポインタを返す関数はどう書けばよいのですか?
引数ならvoid h(int (*i)[5])のように書きますが。
0013デフォルトの名無しさんNGNG
>>12 ↓これを参考にするといいと思うよ
http://www.catnet.ne.jp/kouno/c_faq/c1.html#21
1.21:
charへのポインターを返す関数へのポインターを返す関数へのポインターN個から
なる配列をどうやって宣言すればよいか。
0014デフォルトの名無しさんNGNG
>>13
それを見ながら色々試してみましたができませんでした。
できないものだとあきらめます。
0015デフォルトの名無しさんNGNG
わーい、WinMeのクラシックソリティアで300秒切ったー!!
001613NGNG
>>12 出来たような気がする・・・↓
----------------------------------------------
typedef int D2[][2];

D2 d2_a = {{1,2},{3,4},{5,6}};
D2 *
get_d2_a () {
return &d2_a;
}

main () {
D2 *d2 = get_d2_a ();
int i;
for (i = 0; i < 3; i++) {
printf ("%d,%d\n", (*d2)[i][0], (*d2)[i][1]);
}
}
----------------------------------------------
C:\WINDOWS\デスクトップ\aa>gcc a.c

C:\WINDOWS\デスクトップ\aa>a
1,2
3,4
5,6

C:\WINDOWS\デスクトップ\aa>
----------------------------------------------
0017デフォルトの名無しさんNGNG
コメントをプロプロセッサが取り除いてもいいんですか?
0018デフォルトの名無しさんNGNG
プロプロでいいんですか?
001917NGNG
きちんと変換されたから気づかなかった(-_-;)
プリプロセッサ
0020デフォルトの名無しさんNGNG
int a=100;

if(!a)

とやると,ifはどう言うふうな条件になるの?
0021デフォルトの名無しさんNGNG
>>20
どうって・・・aが偽なら真だろ?
具体的に言うとaの値が0なら。
0022デフォルトの名無しさんNGNG
>>21
ありがとん

if(!a && !b && c => d)

とかも可能?
0023デフォルトの名無しさんNGNG
memset(array,1==2,sizeof array/sizeof array[0]);
0024デフォルトの名無しさんNGNG
>>22
文法上はOK
002523NGNG
無意味なもの書いたうえに間違っているな・・・
sizeof arrayだけだ。わっちゃまずい。
002622NGNG
if(!a && !b && c >= d)

の間違いだった
0027デフォルトの名無しさんNGNG
c => d
ここは?
下げ進行?
002824NGNG
文法上OKじゃないな
=>を見落とした^^;
0029デフォルトの名無しさんNGNG
>>17
「取り除いてもいいんですか?」って言うけど、
じゃあ逆に取り除かれると、まずいの?
むしろ、取り除かれなくてもいいの?
0030デフォルトの名無しさんNGNG
typedef enum {
  false = 0,
  true = (!false)
} boolean;

とかやると幸せになれるだろうか…。
0031デフォルトの名無しさんNGNG
>>30
なんで(!false)と括弧で括っているんだろう?
#defineならわかるが。
003231NGNG
というかtrue=1でいいのでは?
!0は必ず1を返すって聞いたよ。
0033デフォルトの名無しさんNGNG
ていうか、
if(?)のとき?が 0なら偽、それ以外は真と考えろといわれたんだが、
この考え方で危ないと切ってある?
0034デフォルトの名無しさんNGNG
>>33
ない。
0035デフォルトの名無しさんNGNG
>>33
それで正しい。でも!0のとき必ず1が帰ってくる仕様はとても便利
0036デフォルトの名無しさんNGNG
>>34-35
それが仕様であるわけですね?
if()以外でも、たとえば A ? B : C でもこの考え方でOKでつか?
0037デフォルトの名無しさんNGNG
int a = 10;

if ( 9 < a < 10)
printf("9 < a < 10");
else
printf("!(9 < a < 10");

これを実行したら, 9 < a < 10 と表示されました。
これはコンパイラのバグでしょうか?
0038デフォルトの名無しさんNGNG
>>37
それ、ちゃうねん…。
そういうコトがしたい時はこうする。

int a = 10;

if ( a < 9 && a > 10 ) {
    printf("9 < a < 10\n");
} else {
    printf("!(9 < a < 10)\n");
}
0039デフォルトの名無しさんNGNG
9 < a && a < 10
004038NGNG
>>39
ああ、そっちの方が分かりやすいな。無意識にやっちまったよ。
0041デフォルトの名無しさんNGNG
>>40
わかりやすいんじゃなくて>>39が正しい。
0042デフォルトの名無しさんNGNG
9 < a < 10

これは↓こんな感じ?

9 < a <10
↓
1(true) < 10
↓
1(true)
0043デフォルトの名無しさんNGNG
9 < a < 10
って左から結合するのかな
(9 < a) < 10
まぁ常に真だわな
0044デフォルトの名無しさんNGNG
うわ、遅れカブタ
004538NGNG
あ…条件式間違ってるんだね…欝死。
004637NGNG
なるほど、わかりました。
a = 10 として
9 < a && a < 10 って書くと
(9 < a) -> 1(true)
(a < 10) -> 0(false)
ってなって、
(9 < a && a < 10) -> (true && false) -> true
ってことですね。
0047デフォルトの名無しさんNGNG
>>46
ちょっとまて、なんでtrue&&falseがtrueになるんだよ(笑)
004837NGNG
いや、間違えた。
(9 < a) && a -> 1(true)
((9 < a) && a) < 10 -> (1 < 10) -> true
でいいんですね?
これでレベルが少し上がったかな。
0049デフォルトの名無しさんNGNG
>>48 ネタやめれ
0050デフォルトの名無しさんNGNG
本物の37は俺じゃー
オブ戦スレからコピーしてきただけ。
0051デフォルトの名無しさんNGNG
オブ船ってなに?
ヒーローものか?
0052デフォルトの名無しさんNGNG
オブジェクト指向は戦場では必要なし
http://pc3.2ch.net/test/read.cgi/tech/1031028125/
0053デフォルトの名無しさんNGNG
オブ戦なんて言われてるんだ。
005437NGNG
本物の37です。このスレに投稿したつもりがオブ戦にいっていましたか。
時間を置いてみたらちゃんとあったのでちゃんとC俺に書き込んだと思っていたんですが。
ちなみに48は偽者です。
0055デフォルトの名無しさんNGNG
>>54
ネタ投稿じゃなくて誤爆だったのか(藁
0056デフォルトの名無しさんNGNG
C俺 と来たか
005755NGNG
違う、>>54もネタだ
見事に釣られた(ToT)
0058デフォルトの名無しさんNGNG
まあまあ、新しい略語もわかったことだし
0059デフォルトの名無しさんNGNG
てーか、まだ続いてたのね>>52のスレ
006037NGNG
じゃあ、本当の質問ね。
1 < a < 10 のときって左から順番に処理していくのって仕様なの?
本当はこれがききたかったの。
0061デフォルトの名無しさんNGNG
仕様です。
0062デフォルトの名無しさんNGNG
>>36
OK。
if か ? : かは関係ない。
0063デフォルトの名無しさんNGNG
>>60
実際に処理(評価)される順序と結合順はまた別の話。
結合という意味で書いたのなら、左から順番でOK。
0064デフォルトの名無しさんNGNG
むしろ、a < b <= c = d < ... < z みたいな
複合的な多項演算子?を許す言語ってあんのかしら
0065デフォルトの名無しさんNGNG
Cを実務で使ってる方はやはり基本情報程度のC言語の問題なら10分少々で解けたりするんですか?
漏れは2か月前くらいからCを勉強しはじめて、一問解くのに1時間以上かかる事もあるのですが、、、、
0066デフォルトの名無しさんNGNG
>>65
2ヵ月で抱く疑問じゃないよそれ。1年やっても私これだけなんですがって
いうならわかるが。。。
0067デフォルトの名無しさんNGNG
基本情報のCの問題は実際にコンピュータ上で動かすのが難しいところが難点。
0068デフォルトの名無しさんNGNG
基本情報ってどんなの?
006967NGNG
できないって言っているわけじゃないよ。
同じ機能を持った実在する関数を探すのが大変ってこと。
007065NGNG
C言語自体はずぶの素人だったのですが去年まではFortranを多少かじった程度とはいえ使っていたので
プログラミング自体は全くの素人ではないんです。それに2か月間けっこう勉強したから、それでもこれだけ時間かかってしまうのは
センスないのかなー  って思ってしまいます。
0071デフォルトの名無しさんNGNG
再帰処理の問題ならクイックソートでも出せばいいのに、なんで図形描画なんだか・・・
0072デフォルトの名無しさんNGNG
ワイルドカードってなに?
0073あNGNG
*
0074デフォルトの名無しさんNGNG
>>72
http://members5.cool.ne.jp/~ar/ufo/image/uno/wild.jpg
0075デフォルトの名無しさんNGNG
ワイルドアームってなに?
0076デフォルトの名無しさんNGNG
Javaの質問もOKですか?
0077ぼけNGNG
>>76
Ja版で質問しろ
0078 NGNG
ファイルって,どのくらい分割している?
一つのファイルに関数15個以上って,おかしいかな?
0079デフォルトの名無しさんNGNG
>78
類似機能単位に分けるべし。

関数の数が多い少ないだけで判断するのはイクナイ!
0080デフォルトの名無しさんNGNG
CPUがPen3の750MHzなんですが、こんなへぼマシンでもC言語を使えますか?
0081デフォルトの名無しさんNGNG
>>80
ネタならもっと上手く書け
0082デフォルトの名無しさんNGNG
>>81
つっこむならもっと上手く書け
0083DELLNGNG
extern HDC hDC;
void func(){
//....................
}

ってな感じで分割コンパイルでの外部クラスでデバイスコンテキストを指定すると
エラーになるんですが、対処方法を教えてください。

お願いします神様>>1
0084デフォルトの名無しさんNGNG
>>83
何がどうエラーになるんだよ・・・
ネタならもっと上手く書け
0085DELLNGNG
>84
いいからやってみ
0086デフォルトの名無しさんNGNG
bakaaho.c
bakaaho.c(1) : error C2061: 構文エラー : 識別子 'hDC' がシンタックスエラーを起こしました。
bakaaho.c(1) : error C2059: 構文エラー : ';'
0087 NGNG
構文エラー';'がhDCの前に必要です。
予期せぬEOFが検出
0088デフォルトの名無しさんNGNG
前スレがあがってるので。
0089デフォルトの名無しさんNGNG
>>85
あほか
009089NGNG
だめだ。消えた。そりゃそうか。
includeするように。
0091デフォルトの名無しさんNGNG
プログラムのサイズをできるだけ小さくしたいのですが、何かこれは!ってのありませんか〜
0092DELLNGNG
>89
インクルードしたらまともに動いた。
サンクス!
2chも役に立つもんだw
0093デフォルトの名無しさんNGNG
だからBCCは>>1に入れとけとあれほど…
0094デフォルトの名無しさんNGNG
>>91
バイナリエディタで機械語を手書き。
0095デフォルトの名無しさんNGNG
プログラム本体から付属ファイルを呼べるだけ呼ぶ。
あとは念力。
0096デフォルトの名無しさんNGNG
>>91
余計な機能付けない。
GUIに凝らない。
0097 NGNG
コメントつけない
空白作らない
0098デフォルトの名無しさんNGNG
>>91
ご飯は良く噛んで食べる
0099デフォルトの名無しさんNGNG
>>91
初期化コードなど二度と実行されない領域をワークエリアに
使うテクニックは試されましたか?
0100デフォルトの名無しさんNGNG
>91
それは簡単。機能を最小のサブセットに限定する。
0101デフォルトの名無しさんNGNG
>91
それは簡単。七行プログラミングスレに行く。
■ このスレッドは過去ログ倉庫に格納されています