C言語なら、俺に聞け! <18>
■ このスレッドは過去ログ倉庫に格納されています
0001きょうはいいテンキーです。日下部陽一
NGNGいろいろな言語を極めたが、一番手になじむのは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
0516デフォルトの名無しさん
NGNGいいな〜
0517ふか
NGNG漏れは製造系のJOBだから関係ないぽ(涙
金融系に逝くならコボルもマスターしておけば,
運用のおねえちゃんに受けがいいと思われ・・・
0518デフォルトの名無しさん
NGNGswitchで使えるような物は得られないんじゃないかなぁ。
独自にクラスのIDを整数で返す仮想関数を実装するしかないのでは。
0519デフォルトの名無しさん
NGNGお、お、おぉ・・・・
Webプログラミング関連はやめてそっちを回ろうかな。
0521ふか
NGNGそうそう,やっぱりこれからは
コボルやピーエルナントカといった汎用機マンセーの時代だYO
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGこれから回る会社の中に汎用機を主に扱うところがあるの。
こぼるやPL/Iを使っているみたい。
決めた。そこを第一志望にしよう。
0524ふか
NGNGconst char* str="もう寝ます。おやすみなさい\n" ;
void main(){
puts(str);
}
0525デフォルトの名無しさん
NGNG二回改行ですか?
私も寝よう。
0527天然少女
NGNG処理系依存って事なんだけど、どうして処理系によって初期化前の初期値が異なってくるのでしょう?
そこら辺の仕組みを教えて下さい。
0528デフォルトの名無しさん
NGNG処理系依存だったか?
不定では?
0529天然少女
NGNGどうして異なるかが知りたかったんです。
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNGどうしてってANSIが決めなかったから。
javaはゼロ初期化されるらしいけど
0532天然少女
NGNGコンパイラに依存するのかハードウェアに依存するのかも良く分からないんです。
0533デフォルトの名無しさん
NGNGOSに依存すると思う・・・
0534デフォルトの名無しさん
NGNG児童変数はふつうスタックっていう一時的なデータを置く場所に置きます。
そこは、関数の引数や、前に使い終わった変数なんかの値が
そのまま残ってます。
コンピュータは内容をクリアするにも時間がかかるので、一般的に
前に使った物をいちいち消さないんですわ。
それで、初期化しないと新しく作った児童変数の値は
そのゴミの内容になってまう。スタックの使い方はコンピュータや
OS、メモリ状況によって違ってくるのでコトなるんです・・・。
C faq あたりにも載ってるかもしれん・・。
0535天然少女
NGNG仕様でゼロ初期化と決めなかった事自体は構わないんです。
だけど、その不定な値がどのように決定されるか知りたいんです。
変な質問でゴメンなさい。
0536デフォルトの名無しさん
NGNG決めるんじゃなくて残っているものがそのまま使われるんでしょ。
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGautoキーワードがあるから自動変数でいいかと。
0540デフォルトの名無しさん
NGNG前に使った内容がそのまま残ってるんだよ。
前の人が何かいてたかしらんけど、
だいたい、直前に呼ばれた関数の引数とか、そいつが使ってた自動変数の中身とか、
コンパイラがこっそり演算するのに使ってたデータだとかが消えずに残ってるの。
どのように使われてたかは、コンパイラしか知らない。
コンパイラの知識とアセンブラの知識があれば、大体どのように使われていたかは
推測できるけど、そういうテクは、使っちゃいけないと言うのが最近の決まりです。
Cのスタックってのはね、「書いたら消す」という約束を守らない会社の
ホワイトボードみたいなもんなの。
決まってる訳じゃなくて、まえに誰かが書いたのがそのまま残ってるの。
0541デフォルトの名無しさん
NGNG>>534が言ってるのでだいたいあってます。
0542デフォルトの名無しさん
NGNGまもなく書き換えられるだろうけど。
0543デフォルトの名無しさん
NGNGポインタと言いなはれ
0544デフォルトの名無しさん
NGNGすまん
0545天然少女
NGNGコード書いた人と処理系が違うので、理由を明確に説明してあげたかったんです。
皆さん親切に感謝!
0546デフォルトの名無しさん
NGNGそのコード書いた人失格。
でもコンパイラが教えてくれない?
0547デフォルトの名無しさん
NGNGそういう細かいところに疑問を持つのはいいことだと思いますの。
スタックと児童変数の関係を理解したら、今度は
ヒープと malloc, free や、なぜ児童変数の配列は固定長でなければ
ならないのか、考えてみるとさらに理解が深まりますにょ。。
って、すでに知ってたらごめんなさい、だけど…。
0548デフォルトの名無しさん
NGNGついでに「未初期化の変数を使用した」旨の警告メッセージを
読み飛ばさないように教育しといてね。
警告メッセージは全部つぶすのが基本なんだけど、
そのなかでも普通はエラーにしてもいいんじゃないかっていうレベルの
警告もいくつかあるからね。
0549デフォルトの名無しさん
NGNG警告抑制してつぶしていたりして(w
0550デフォルトの名無しさん
NGNGなるほど…同じ職場ならコーヒー一杯おごってもらえ。
あなたにはその権利がある。かもよ。
0551デフォルトの名無しさん
NGNGgcc src.c >&/dev/nullとか(藁
0552デフォルトの名無しさん
NGNG興味をもつのはいいと思うけど、「じっさいにこーだからだめ」は説明つかないときに反論できないからお薦めしない。
動作が未定義な事は避ける、これが納得できないやつはプログラマ失格だとからだで覚えさせtやれ。
あと、処理系依存はドキュメントでも確認する、できれば避ける、も励行して欲しい。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG別に○○少女でなくても丁寧に答えてくれるだろ。
酷い態度でなければ。
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNG今日はNULLあたりでマジになってたのが多かったから
それなりの答えが返って来ただけで
普段だったら、>>527の質問で
「女の子の仕組みを教えて下さい」
って切り返して終わるのがオチと思われ
0557デフォルトの名無しさん
NGNGこのスレは違う。
0558デフォルトの名無しさん
NGNGきっとモーホーなお兄さんが全力で教えてくれるぞ。関係ないことまで。
801板のお姉さんたちでもいい。
0559デフォルトの名無しさん
NGNG呼んだか?
0560553
NGNG0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGSendMessageでテキストボックスなどコントロールを
表示・非表示の切り替え や使用可能・不可能の切り替えはどう書けばいいでしょうか?
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG実装依存
0569とおりががり〜
NGNG568さんのいうとおり実装依存じゃないでしたっけ。
0570デフォルトの名無しさん
NGNG過去ログ読んでくれ。もうたくさんだ。
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNG不毛な揚げ足取りはやめましょうとかで良いんじゃないの?w
0573デフォルトの名無しさん
NGNG2ch向けのFAQ書くかだなあ。
十数年前の暇な学生の頃だったらやってたかも。
0574○○なお兄さん
NGNG0575デフォルトの名無しさん
NGNG言語定義の説明に本気で反論してそうなやつ、たまにいるからね。
0576デフォルトの名無しさん
NGNGプロらしいのに読んでないやつが結構いるのか分からん。
0577
NGNG文字の色を変えたり下線を引いたりするのに
MS-DOSのエスケープ・シーケンスを使うってあったんですけど
コマンドプロンプトではどうすればいいんでしょうか?
0578デフォルトの名無しさん
NGNG・定数の "0" は、文脈によってヌルポインタ、または整数の 0 として解釈される。ただし、可変長引数、またはプロトタイプをもたない関数の引数に現れた場合は整数の 0 として解釈される。
また、整数型とポインター型とで多重定義している関数の引数では、解釈は実装依存となる(C++ 限定)。
・ヌルポインタのビットパターンは実装依存である。
・条件式にヌルポインターが現れた場合、偽となる。
・ヌルポインタとヌルポインタとは等しい。
・ヌルポインタとその他のヌルポインタとは、常に等しくない。
・ポインタ型によりヌルポインタのビットパターンが異なる場合があるが、コンパイラは(騙されない限り)正しい型を知っているので、比較は正しく行われる。
・NULL は 定数 "0" がヌルポインタとして解釈される場合のみ、定数 "0" の代わりに使用できる。他の文脈では、結果が実装依存となる。(NULL を整数 0 の代わりに使用してはいけない)
・NULL の定義方法は処理系により決定される。(#undef NULL は合法)
0579デフォルトの名無しさん
NGNGすばらしい!
でも、
>・ヌルポインタとその他のヌルポインタとは、常に等しくない。
・ヌルポインタとその他のポインタとは、常に等しくない。
の間違いかな。
0580デフォルトの名無しさん
NGNGこれがわからない。
解説キボンヌ
0581デフォルトの名無しさん
NGNGと定義し、
str[3]='\0';
とした場合、配列自体は書き換えたところ以外は変わりませんが、文字列は3文字まで切りつめられたとみてよいですよね?
というのも、「文字列を切りつめるには適切な場所に'\0'を挿入すればよい。」という考えが正しいのかどうかと思いまして。
0582デフォルトの名無しさん
NGNG正しい。
0583デフォルトの名無しさん
NGNG正しいんですね。ありがとうございました。
間違っていなくてよかった。
0584修正
NGNG・定数の "0" は、文脈によってヌルポインタ、または整数の 0 として解釈される。ただし、可変長引数、またはプロトタイプをもたない関数の引数に現れた場合は整数の 0 として解釈される。
また、整数型とポインター型とで多重定義している関数の引数では、解釈は実装依存となる(C++ 限定)。
・ヌルポインタのビットパターンは実装依存である。
・条件式にヌルポインターが現れた場合、偽となる。
・ヌルポインタとヌルポインタとは等しい。
・ヌルポインタとその他のポインタとは、常に等しくない。
・ポインタ型によりヌルポインタのビットパターンが異なる場合があるが、コンパイラは(騙されない限り)正しい型を知っているので、比較は正しく行われる。
・NULL は 定数 "0" がヌルポインタとして解釈される場合のみ、定数 "0" の代わりに使用できる。他の文脈では、結果が実装依存となる。(NULL を整数 0 の代わりに使用してはいけない)
・NULL の定義方法は処理系により決定される。(#undef NULL は合法)
0585デフォルトの名無しさん
NGNGecho ^[[0\;1m
てな感じでechoしよう。^[ は実際は'\x1b'ね。
0586デフォルトの名無しさん
NGNG、、、
0587577
NGNGレスありがとうございます
でも できなかったです
bccがだめなんでしょうか?
0588デフォルトの名無しさん
NGNGWindowsNT,2000,XPを使っているとみた。
0589577
NGNGXPだと色変えれないんでしょうか?
0590親切な人
NGNG追随を許さない、RX-2000�V !!!
注目のオークションにも適用されてるね↓
http://search.auctions.yahoo.co.jp/search/auc?p=RX-200
0591デフォルトの名無しさん
NGNG少なくともエスケープシークウェンスでは無理。
何かライブラリがあると聞いたが。
0592デフォルトの名無しさん
NGNGDOS/Vで使えたっけ?
ANSIsysか何かが必要だった気が。
0593デフォルトの名無しさん
NGNGコマンドプロンプトはDOSではないがね。
0594デフォルトの名無しさん
NGNGLSI-Cとか使いなさい
0595デフォルトの名無しさん
NGNGAny two null pointers shall compare equal.
というISOの規格そのままだと思うが何か?
(もっと細かく言うなら、「どの型のヌルポインタ
も互いに等しい」と書くべきかも知れんが。)
0596デフォルトの名無しさん
NGNG570 名前:デフォルトの名無しさん 投稿日:2002/05/04(土) 15:40
>>569
過去ログ読んでくれ。もうたくさんだ。
571 名前:デフォルトの名無しさん 投稿日:2002/05/04(土) 15:57
次のスレには、ぜひ、NULL、0==var、main()の戻り値については議論しないように書いて欲しい。
572 名前:デフォルトの名無しさん 投稿日:2002/05/04(土) 16:04
>>571
不毛な揚げ足取りはやめましょうとかで良いんじゃないの?w
573 名前:デフォルトの名無しさん 投稿日:2002/05/04(土) 16:10
それぞれの議論へのポインタを置くか、
2ch向けのFAQ書くかだなあ。
十数年前の暇な学生の頃だったらやってたかも。
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG>584 で終わっているんじゃないの。
0600デフォルトの名無しさん
NGNGというのを作ってみるとか。
で、このスレは廃墟に…
0601デフォルトの名無しさん
NGNGで、このスレはあっちのくだ質のように廃墟に・・・
0602デフォルトの名無しさん
NGNGとか…
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNGしかし、それはcじゃなくてWin32APIスレの方が適切だ
0605デフォルトの名無しさん
NGNG0606603
NGNGとやって表示しようとしたら表示できず、
sprintf(mes,"%s:",a[1].Name);
とやったらOSが落ちました。
なぜでしょう?
0607デフォルトの名無しさん
NGNGmesが不適切の可能性。
a[1].Nameが不適切の可能性。
なめてるのか?
0608デフォルトの名無しさん
NGNGコンセント抜けたんじゃない?
きにするな
がんがれ
0609603
NGNGcharにかえてみたところうまくいきました。
0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNG領域破壊ですかね?
0612603
NGNGsprintf(mes,"%sのなまえはなんでしょうかね?",a[1].Name);
としたところOSが落ちました。
char mes[256];
aのメンバNameはchar Name[256];
です
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNGOSは何?
0615デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています