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
0710デフォルトの名無しさん
NGNGdivダタ(;´Д`)
0711デフォルトの名無しさん
NGNGreturn n & 0x800 ? n | 0xf000 : n;
0712デフォルトの名無しさん
NGNGいや、それ確かにifは使ってないけど・・・
0713デフォルトの名無しさん
NGNG大抵って・・・・
0714デフォルトの名無しさん
NGNG少なくともVC++6ではsar使ってくれましたです。ハイ
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG自信無いけど…
0717探しています
NGNG0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNGシフトの動作が実装依存だから、100点ではない
0720デフォルトの名無しさん
NGNG0721720
NGNG0722700
NGNG>>707でいいみたいですねー
と思ったら、ヤパーシダメなケースもあり?
つーか、負数が2の補数でない環境なんてあるんでしょうか?
あとシフトの動作が違うとか.… カナーリ特殊ですよね?
0723デフォルトの名無しさん
NGNG符号付き右シフトの前に、左シフトでオーバーフローする可能性がある。
未定義動作。そこまで気にするなら716のような方法でやるんじゃないか?
716のコードはなんか間違っているような気がするけど。
>>722
規格を読むことを勧める。
0724デフォルトの名無しさん
NGNG0725デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNGdst = ( 2048-src > 0 ) ? src : src-4096 ;
0728デフォルトの名無しさん
NGNG実装依存だよ。K&Rを読もう
0730デフォルトの名無しさん
NGNG承知のうえで使うのはアリなんじゃないの?
0731デフォルトの名無しさん
NGNGここはCのスレだから
0732デフォルトの名無しさん
NGNGではどうかな?
適宜キャストしてね。
でも、実際に自分が使うとしたら、処理系依存に目をつぶって
>>707あたりを使うと思うけど。
0733デフォルトの名無しさん
NGNGdst = src - (( src & 0x0800 ) << 1 ) ;
0734デフォルトの名無しさん
NGNG>>700
>A案
>des = souce <<4 >>4 // と書いたらコンパイラの最適化で無視されて値変わらず
>B案
>des = souce <<4; // と2段に分けたら正常に通ります
>des = des >>4;
>聞きたいのは、これに最適化を書けた場合、やっぱり無効化されちゃいますでしょうか?
何でA案は試してるのに、B案が無効化されるか試さなかったんだ?
つーか、やっぱりネタか?
0735デフォルトの名無しさん
NGNG理解を深めたいかのどちらかだろ。
コンパイラのバグをつつくというのもあるけど・・・
0736デフォルトの名無しさん
NGNG100といれれば3を返すような関数が作りたいのです。
お忙しい所、大変申し訳ありませんがどなたかご教授ください。
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG現役なのにすっかり忘れてましたー(;´Д`)
ありがとうございます。
試してみます!
0739デフォルトの名無しさん
NGNGint keta(int num)
{
int n = 1;
while ((num /= 10) > 0)
++n;
return n;
}
ただし正の数のみ
0740デフォルトの名無しさん
NGNG0 および負数の扱いはどうするんだ ? (>>739 だと 0 の時は、0 が返る
が良いのか ? (まあ、正数のみと言ってるからいいか...。))
>>737
間違ってるぞ。それだと、100 の時に 2 が返るぞ。
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNGいや、最初に n=1 してるから num==0 だとしても1が返るんじゃないか?
0743デフォルトの名無しさん
NGNGint keta = (int)log10(num) + 1;
だね
0744デフォルトの名無しさん
NGNGstrlenとか
0745デフォルトの名無しさん
NGNGあれだけ変換のバリエーションを持ちながら、最後に書き込んだ文字数を返すなんて凄すぎます。
ではまた(^-^)/~~
0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNGstrlen()
0748デフォルトの名無しさん
NGNG左シフトはオーバーフローしないのか。間違い書いてスマソ。
0749740
NGNG合ってるわ、ごめん。なんか勘違いしてた。
>>745
VC++ のライブラリソース見ると、printf() の下請け関数 output()
だね。UNICODE 対応などもあって実に 670 行もあるぞ。
0750デフォルトの名無しさん
NGNGsscanfもわすれずに。
0751デフォルトの名無しさん
NGNGをB=の形にするには、どうしたらいいでしょうか?
0752デフォルトの名無しさん
NGNG質問の意味が不明。
0753デフォルトの名無しさん
NGNG丸一分間じっくり眺めたんだけど...
0754デフォルトの名無しさん
NGNGA+B & 0xFF = C
B = C - A & 0xFF
???
0755デフォルトの名無しさん
NGNG&0xFFした時点で上位が失われてるから、
そうゆう意味でB=にするのはむりですよね?
結局どういう質問なんだかむしょうに知りたくなってきた。
0756デフォルトの名無しさん
NGNGreturn num % 10 ? keta(int num % 10) + 1 : 1;
}
0757デフォルトの名無しさん
NGNGが
(A+B)&0xFF==0x00
と仮定して
B=0-A
の時なら成立するって事では?
0758デフォルトの名無しさん
NGNGsize_t が妥当かと
って、その前に虫々やん
0759デフォルトの名無しさん
NGNGketa(num, 1);
}
int keta(int num, int i) {
return num % 10 ? keta(num % 10, i + 1) : i;
}
推奨 -O4
0760デフォルトの名無しさん
NGNGすごくくだらない質問です。
C++ と VisualC++ は同じ言語ですか?
コンパイラのソフトは一緒ですか?
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNGC++ : 日本語
Visual C++ : 関西弁
(別に「関西」に意味はなし。)
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNGあなたは今、差別を行いましたね、差別を。
差別差別差別。
あ、社民党から電話なので、また明日。
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG0770767
NGNG0771デフォルトの名無しさん
NGNGあなたは今、
戦う人を勝手に妄想していますね?
妄想してますね?
0772デフォルトの名無しさん
NGNGアイヌ、アプサラスのテストに行って参ります!
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNG標準マクロが定義されている文脈では、そのマクロを
#undefしたり#defineしてはいけない。
例えば、NULLを定義するへッダをインクルードしたとき、
NULLを#undefしたり#defineすると未定義動作になる。
例外として、標準関数と同じ名前のマクロと両方が定義
されている(かもしれない)とき、「マクロじゃない方を
確実に使いたい」ために#undefするのは許されている。
また、
最初の1文字がアンダースコア、2文字目が大文字
最初の2文字がアンダースコア
の名前を#defineしたり#undefすると、常に未定義動作と
なる。
0776デフォルトの名無しさん
NGNG-O4の意味が分からんのでネタだと思うが一応…
#define keta(s) neta( 0, s )
size_t neta ( size_t size, int num ) {
return ( size++, num /= 10 ) ? neta ( size, num ) : size ;
}
0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNGならマ板でやってください。
0779初心者にもなってない
NGNGオススメはなんでしょうか?
できれば評判のいい物を買いたいので・・・
0780デフォルトの名無しさん
NGNG推薦図書/必読書のためのスレッド
こっちいってください>>779
0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNGC本、古臭いK&Rいつまでも持ち上げるなヴァカ
こっちにいってください(藁>>779
0783デフォルトの名無しさん
NGNG林に倉・・・・
じゃあぼーよーはいいんだな?
0784781
NGNG0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNGのように文字列や数字をくっ付けるにはどうすればいいのでしょうか?
0787デフォルトの名無しさん
NGNG意味わからん
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG"ABC" "DEF"
0790デフォルトの名無しさん
NGNGstrcpy
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNGstrcat
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG今月の日系ソフトウェアを読んでいるのですが、
構造体は、メンバ変数のサイズの合計とトータルのサイズが
違う場合があると書いてあるのですが
強制的にあわせるコーディング方法はありますか?
または、コンパイルオプションなどで指定するのでしょうか?
なにとぞご教授ください。
0795デフォルトの名無しさん
NGNGひろゆきってたまーに驚く程幼稚なセリフ真顔で吐くんだけど、いったいどういう
青春を送ってきたのだろう?
普通に成長を遂げた人間であれば赤面してしまうような恥ずかしいセリフ
82 :参加するカモさん :01/12/13 15:02
なんとなく言ってることわかる。
俺もひろゆきと何回か話したことあるけど、大昔のドラマでも見てるような気になった
95 :参加するカモさん :01/12/22 16:35
飲み会になると、必ず「遅刻」の話を得意気に語りだすけど、ひろゆきって遅刻することかっこいいと
思っているのかな?
回りの人間は苦笑するしかないけど、この人やっぱり幼稚だと思う
0796794
NGNGそのままmemcpyで構造体にコピーできたら
便利なんですけど、メンバ変数に隙間ができると
それができないですよね?
どうしたらよいでしょう?
0797デフォルトの名無しさん
NGNG好きなほうを選ぼう
1.gccとか、コンパイラのオプションで隙間をつめるオプションをつける。
バウンダリの問題が発生するかもしれないけど、知らん。
2.固定長のレコードを吐く人は構造体の先頭アドレスからsizeof分吐くようにする。
書き出しと読み込みのコードを統一管理できなきゃダメだが。
0798794
NGNGありがとうございます。
書き出しのほうはいじれないので1しかないです。
バウンダリの問題とはどのようなものでしょうか?
0799デフォルトの名無しさん
NGNG処理系依存になるけどかならず #pragma pack みたいなので
構造体のパック方法を統一しておこう。
整数型とか、エンディアンが異なると死ねるけど、
同じコンパイラ・同じ環境で動かすならこれで十分。
0800794
NGNGムムッ!!
エンディアンという問題もあるんですねー
実はVCでコーディング中なんですけど
動かすのはUNIXなんです。
こりゃーやばいっすねー
0801デフォルトの名無しさん
NGNGhttp://isweb3.infoseek.co.jp/play/ayusya/ProgramAlgorithm.html
こことか参考になるのか?
"構造体のアライメント"でMSDNから調べてみるとか。
よくわからんけど。
0802デフォルトの名無しさん
NGNGまーどうにもならないんだったら、ちまちま手作業でメンバに書いてけ。確実だ。
はい次
0803デフォルトの名無しさん
NGNG32bit型データの読み書きをするとき必ずアドレスが4で
割り切れることにおいとかないとプログラムが止まっちゃうような
CPUもあるからね。
pack(2)とかしたとき、
struct foo {
INT32 a;
INT16 b;
};
の構造体を連続したメモリに配置すると、
奇数インデックスの要素のa が、4で割り切れないアドレスに配置されちゃうことがある。
これをfread(buf, sizeof(foo), n, fp);
なんかで読み出して
buf[1].a とかをアクセスすると死んじゃうわけ。
対策としては一構造体ずつ(隙間を埋めつつ)読み込むことにするか、
一気に読んで、アクセス前に構造体を安全なメモリにコピーする、
もしくは構造体の末尾にダミーのデータを入れて、想定できるすべての環境で
問題が発生しないようなサイズ(4の倍数とか8の倍数)にすること。
0804デフォルトの名無しさん
NGNGえんでぃあんはこんぱいるオプションか、または根性で乗り切れ。
つーかCPUは何と何だ?
0805デフォルトの名無しさん
NGNGいろんなプラットフォームにまたがって、かつ扱うデータサイズがそれほど
大きくないならテキストではき出すのが一番楽だよ。
XMLとかつかってもいいけど、タダのCSVで済むならそうしたほうがいい。
0806デフォルトの名無しさん
NGNGコンパイラによってはアラインメントを詰められないものもあったと思うよ。
VCだと #pragma pack でOKだけど、これはコンパイラ依存。
UNIXで使うコンパイラで使える技かどうか確認されたし。
0807デフォルトの名無しさん
NGNG改行コードとか。ま、どうにでもなるか。
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています