[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 23:36 / Filesize : 113 KB / Number-of Response : 451
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミング質問すれ Part1



1 名前:名無しさん@お腹いっぱい。 [2005/09/22(木) 20:29:34 ]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

過去スレ(プログラム技術板)
Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/
Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/
Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 pc2.2ch.net/tech/kako/992/992057422.html

Part3ミラー makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2ミラー makimo.to/2ch/pc5_tech/1055/1055110889.html

関連スレ
Cygwin使っている人いますか? その14 (UNIX板)
pc8.2ch.net/test/read.cgi/unix/1107587275/
Cygwin使っている人いますか? 3 (Windows板)
pc8.2ch.net/test/read.cgi/win/1090131123/

関連板
Linux板 pc8.2ch.net/linux/
プログラム技術板 pc8.2ch.net/tech/

301 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 11:47:11 ]
使えるツール、足りないツールを作る。それがプログラミング
できない人は覚えたい。できる人でも穴はある。
UNIXはツールが多いようでつなぎも情報もすくないんだから
貴重なスレをあんまり算数の遊びみたいなんでスレを消費するない。
やるならせめてbcとかシェルとか局所的なものにしちくれ



302 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 11:50:30 ]
>>300
> >>287はかっこが足りないだろ

どこが?

> それに正が前提と言うならfabsなりabsなりいれればいいじゃないか。

単純に入れたら、正=負とかいう馬鹿な結果が出るから、めんどうだっただけ。

303 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 12:27:28 ]
貴重なスレって、長寿スレでも狙ってるのか? w
実数演算の話題はあまりないので結構楽しかったぞ。

304 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 12:45:32 ]
板違いと思っていたから参戦しなかったが、
その辺のことはアメリカ人が詳しくまとめてるよ。
やつらは実数部でドル、小数部でセントを表すことをよくやるから。
いろいろな言語にBCD演算を入れる提案がつきないのもそのため。
exact calculation floating point number あたりでググってくれ。
IEEE 754を仮定して近似計算で、BCD相当の結果を出すものがたくさんある。
中にはbit演算で正規化されたIEEE 754表現を扱うものまである。

現代のCOBOL、Javaのページにもこんなんがあるしな。(単純なものだけ)
java.sun.com/developer/JDCTechTips/2001/tt0807.html

305 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 12:46:37 ]
今のペースだと、Part1なのに10年以上あるスレってか

306 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 12:51:59 ]
>>304
それは、内部表現を固定小数というか、
全部セントに統一しなかったアメリカ人が馬鹿なだけのような

307 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 12:58:41 ]
金利計算とかあるからセントが最小単位じゃダメだろ。

308 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 13:04:25 ]
>>300
お前は roundのことは四捨五入と言わないのか?

あと、>>287 に括弧が足りないところなんてないし。

もうちょっと「日本語」と「道具の仕様」は知っておこうよ

309 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 13:17:07 ]
>>307
じゃあやっぱりBCD一択。



310 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 13:19:59 ]
>>300
おいおい、(s)printfの "%f" 変換は、round() じゃなくて rint() 方式だよ。
(確認済み)

311 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 13:21:18 ]
ジンバブエ・ドルも計算できる桁数無いといかんな。

312 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/06(土) 16:30:25 ]
インストールしたプリンタの一覧ってどうやって
取得できるのですか?

313 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 00:33:16 ]
>>309
組み込みでBCDがないなら、
オペレーター多重化がないとプログラム書きづらいな。

314 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 07:34:44 ]
無知晒した >>300 の釈明まだぁ?

315 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 10:39:11 ]
sprintfで少数第2位まで出しておいて、strncmpで小数点1桁の文字列と比べれば丸めも減ったくれもどうでもいいだろ。

316 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 11:47:04 ]
>>315
だから、sprintf()で小数第2位まで出す際に、sprintf()自体で丸めが起きるんだよ。
printf("%.2f", 1.099) → 1.10 と表示

あと、×少数 ○小数な、日本語くらい正確に使おうよ。

317 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 11:51:42 ]
>>315
sprintfで小数第2位まで出す際に、
小数第3位が丸められるから、
その結果、小数第1位に繰り上がってしまうことがある。

よって、>>315 の言ってることは不正解。

318 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 12:41:31 ]
doubleの有効桁は15~16なので>>278を改造して17桁とれば良い。

int compare(double a, double b)
{
char s1[512], s2[512], *p;

snprintf(s1, sizeof(s1), "%.17f", a);
if ((p = strchr(s1, '.')) && p[1])
p[2] = 0;

snprintf(s2, sizeof(s2), "%.17f", b);
if ((p = strchr(s2, '.')) && p[1])
p[2] = 0;
return !strcmp(s1, s2);
}

319 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 12:46:13 ]
>>318
…ネタだよな?



320 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 22:48:58 ]
>>317
じゃあ4位まで出すか。

321 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 23:05:57 ]
>>320
sprintfで小数第4位まで出す際に、
小数第5位が丸められるから、
その結果、小数第1位に繰り上がってしまうことがある。

よって、>>320 の言ってることは不正解。

322 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/07(日) 23:51:11 ]
小数点指定なしでいいな。

323 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 16:56:18 ]
>>303 UNIX関連のプログラミングの情報源として密度が薄まる
別にスレが長寿になる必要はない。

>>302 のは結果として役立たずなわけだから「〜れば」とかいうのはいいわけでしかない。
できたような気になっているだけだ。

>>308 roundが四捨五入なんてプログラミング言語はない。
知らないなら覚えろ。常識
四捨五入は意図的にコンパイラが切り捨てコード使ってで作るものだ。

カッコなしで複数の条件列挙は
は言語によりなければエラーになるものがある。
イコールでの条件列挙は適切とは言えない。

速いからdoubleなんだしdoubleのデータの問題で
「初めからBCDで」とか論外

324 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 17:16:43 ]
>>323
roundは普通の意味での四捨五入。(2進だから0捨1入)
rintは四捨五入ではなく、偶数への丸め。常識。知らないなら覚えろ。
おまえ、sprintfの件で、roundとrintを混同して指摘してただろ。>>300 で。


> カッコなしで複数の条件列挙は
> は言語によりなければエラーになるものがある。

「言語により」って、最初から C言語の話してるんだろ。
演算子の優先順位も知らなかったくせに、見苦しい言い訳するなw


結論:
>>300 = >>323 は自意識過剰のものすごい知ったか。

お前の言葉をそのまま返す、
「もうちょっと『道具の仕様』は知っておこうよ」

325 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 17:46:18 ]
「〜れば」とか「初めからBCDで」とか「」使って引用してるふりしながら、
どれも正確じゃないんだよな。
自分独自の解釈を随所におりまぜてそう。

326 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 20:12:00 ]
はいはい逆にしてましたよ。間違えてました。RINTとROUND
恥ずかしくも「正しい解説のメモ」とかアップしているていたらく

どうせアタシャ低レベルなアセンブラプログラマーですよ。
でも今回いつCが前提になったんですか?
JavaScriptとかPerlもありだとみてたんですがね、

独自解釈でもなんでもちゃんと動くものを仕様書こみでつくれるからいいんです。

でも今回の件は
long doubleにキャストして
i386 FreeBSDに関して言えば
fpsetprec(FP_PE)
を使って10倍して差をとり整数化すればいいんですよね、
仮数部が内部で64bitになるので丸め誤差でません。

最初から10byteモードっていってましたよね。
理解できなかった?

どうして型キャストとかできないんですか?
floorとかsprintとか無駄過ぎ

机上の論議過ぎて実用性ゼロ

その点を言っているんです。
道具としてのUNIXでなくて
UNIXのためのプログラミングノーハウの話をしないなら
板違いだっていっているんだ。


327 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 20:26:33 ]
>>326
> でも今回いつCが前提になったんですか?

>>258の1行目


328 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 20:40:08 ]
今回いつ、「実数」がdouble以下で、かつ、
long double が double より精度高いプラットフォームが前提になったんですか?

329 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 20:41:01 ]
こういうバカがチームにいると大変だな。お前、向いてない転職しろ。



330 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 21:17:38 ]
たしか、JavaScriptもPerlも&&より==の方が強いよなぁ。
しかもこいつらってlong double的なの明示的に使えたっけ?

331 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 21:35:22 ]
使えないな。
しかも、FPU使うコードなんて今時見ないぞ。

332 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 23:37:10 ]
>>329
普通はこんなしょうもない問題にぶち当たらないようにコーディングするもんだ。

お前の卓越した知能wがチームの効率下げてるんじゃね?

333 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/08(月) 23:55:42 ]
自信満々で「仕様書込みで動くものをつくれるからいい」とか豪語しながら
仕様を逆に覚えてヘッポコなバグを作りこむクズはいらない。

334 名前:名無しさん@お腹いっぱい。 [2008/12/09(火) 00:00:34 ]
>>332
つっこみどころはそこだけなんかよ
技術的なことにつっこんでくれよ

335 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/09(火) 11:02:08 ]
>>326
> 10倍して差をとり整数化すればいいんですよね、

ここ意味わからんかった。
これじゃ差が0.1以下であるという判定しかできないんじゃないの?
やっぱりfloor的なものがどこかにいるんでは?

336 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/09(火) 13:32:00 ]
彼の完璧な仕様に文句をつけてはいけない。

337 名前:名無しさん@お腹いっぱい。 [2009/01/14(水) 17:04:18 ]
この問題なんですが、解答あってるでしょうか?

msgbox "変数aの値は" & a & " , 変数bの値は" & b

この文を先頭から2つ目の&までとその後の部分に分け、正しく2行で記述しなさい。
また、変数a,bの値がそれぞれ10,20である場合に、実行したときに表示される
メッセージボックスの中の記述内容を書きなさい。

解答。

msgbox"変数aの値は" & a &
msgbox"変数bの値は" &b

変数aの値は  10
変数bの値は  20



338 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 17:31:14 ]
UNIX無関係なので板違い

339 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 22:36:54 ]
金をdoubeで扱う勘定系プロジェクトに配属になったけど
ソッコーで抜けさせてもらったことがある
「おかしい計算が合わない…」とかいうつぶやきが遠くで聞こえてるうちに逃げてきた



340 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 22:39:50 ]
あはははははは

341 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 23:40:05 ]
>>326
> 仮数部が内部で64bitになるので丸め誤差でません。

何も理解してないw

342 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/14(水) 23:53:11 ]
仮数部を増やす方向にキャストしてから10倍すれば問題起きないよ。
それができるという前提がなかったからあの話がおかしかっただけで。

それよりおまえは1ヶ月以上前の話につっこんでも意味がないことを理解していない。

343 名前:名無しさん@お腹いっぱい。 [2009/01/17(土) 12:00:35 ]
>>342 プログラミングという机上の空論で遊んでいるやつらに
現実的なプログラミングのノーハウをちらみさせても意味ない事に気づけ

ダメ系の算数野郎さんはとりあえずgccでπでも1万桁求めるにはどうしたらいいかとか
まっとうなプログラミングの道でもしめせばいいよ。
UNIXの場合必要なライブラリーはデスクトップを入れるとついてきたりしている。
あえて名称はかかんけどね、

だいたい元々の話がリアルな精度ではなくて「10進化された文字列」での話なんだから二進演算の精度うんぬんなんて実は関係ない。
どっちかというと「.」がらみの正規表現のプログラミングの方が正解で
それは最初に「文字列で」と書いているレスでおわっているわけだ。


344 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 14:26:14 ]
コンパイル結果のファイル名ににタイムスタンプをつけたくて
Makefile中に以下のようにして
TIMESTAMP=`ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g'`
時間をとりだしているのですが、結果的にTIMESTAMPには
TIMESTAMP=rwrr 1 user user 601847 20090130 14:19 objname.hex
という値が格納されてしまいます。
実際にシェルから実行したら
20090130
という結果が表示されるのですが、なぜでしょうか?
ちなみに
TIMESTAMP=$(ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
でも結果は同じです。
アドバイスよろしくお願いします。


345 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 14:28:13 ]
失礼しました。
TIMESTAMP=$(ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
ではなく
TIMESTAMP=$(shell ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g')
でした。


346 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 14:42:44 ]
TIMESTAMP=`ls -l --time-style=long-iso $(OBJNAME).hex | awk '{print $6}' | sed 's/-//g'`
awkのprintの引数を$$6にしたらいけました。
何故でしょうか。
よく分かりません。

347 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/30(金) 15:10:55 ]
Makefile中では$に特別な意味があるから。


348 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/01/31(土) 00:25:38 ]
makeの変数展開

shの変数展開

awkの変数展開

349 名前:名無しさん@お腹いっぱい。 [2009/02/05(木) 21:48:12 ]
ポインタじゃなくて、structの実体渡しで呼び出す関数を、
structの即値の引数で呼び出すことってできませんか?

どういうことかというと、

struct hoge {
int hoge_a;
char *hoge_b;
};

void func(struct hoge);

と宣言されてる時、

struct hoge hh = {123, "boke"};
func(hh);

で呼び出すと、呼び出しのためだけにstruct hoge hhを宣言するのが無駄なので、

func({123, "boke"});
みたいな形で、引数を即値にして一発で呼び出したいんですが。



350 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 22:22:28 ]
>>349
たぶんC99限定だけど、複合リテラル
func((struct hoge){123, "boke"});


351 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/05(木) 22:36:02 ]
>>350
ありがとうございます。(struct hoge)を頭につけるだけで良かったんですね。
ちなみに、実体渡しじゃなくて、普通のポインタ渡しの場合でも、

func(&(struct hoge){123, "boke"});
で行けることを確認しました。

352 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 08:18:47 ]
えっと自分でなんちゃってダウンローダを作っていて、いくつかの Unix 上で
(いまんとこ Linux と Mac OS X)で同じコードを使いたいと思ってます。
で、整数型の移植性がちょっと気になってます。

4GB以上のファイルを扱うために32bitより大きい整数でファイルの大きさを表現しない
といけないのですが、これってどんな型を使うのが正解ですかね?
必要なのは 1) 4GB以上のサイズを表現可能(http とかにファイルサイズを埋め込む)
2) printfとかで簡単に表示可能 です。

とりあえず off_t かな? と思ったんですが、ビット数とかよくわからないし、printfの指定も
よくわからないし、もしかしてとりあず long long にでもした方が楽なのかなあ、とか...

353 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 08:31:56 ]
もちろんoff_t
www.suse.de/~aj/linux_lfs.html

これも参考になる。
jp.sun.com/practice/software/solaris/jp/wp/Sol_file/index.html

Macは知らない。

354 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 09:05:26 ]
便乗質問ですが、
off_t を printf する時、書式指定はどうすればいいの?
off_tは、64bitの場合も32bitの場合もあって、OSによって違うけど、
ソースは共通にしたいという場合の話です。

355 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 09:36:01 ]
>>354
書式は固定して、32bitの場合でも(long long)にキャストして表示。

356 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/06(金) 09:42:02 ]
jp.sun.com/practice/software/solaris/jp/wp/Sol_file/sol_3.html#sol3_2_2_3

357 名前:名無しさん@お腹いっぱい。 [2009/02/27(金) 18:41:03 ]
はて? 何が悪い?

$ cat file1.c
char s[] = "hoge\n";

$ cat file2.c
extern char *s;
int main(){printf(s);}

$ gcc file1.c file2.c

$ ./a.out
Segmentation fault

358 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 18:59:12 ]
あたりまえだ。

$ cat file2.c
extern char s[];
int main(){printf(s);}

359 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 19:00:51 ]
file1 では、s という名前の箱には、直接 char[] が入っている。
file2 では、s という名前の箱には、char を指すポインタが入っている、と宣言している。

ポインタと配列は混同してはいけない。
「エキスパートCプログラミング」の4章を嫁



360 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 19:00:54 ]
>>357
C FAQ一読しとけ
www.kouno.jp/home/c_faq/

361 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 19:06:18 ]
じゃあなんでこれは動くんだよ

func(char *s){printf(s);}
int main(){char s[] = "hoge\n"; func(s);}

362 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 19:08:05 ]
>>357
main()で、int宣言してるのに値を帰してないからじゃないの?
未定義の値が帰ってSegmentation faulするのでは?

363 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 19:26:00 ]
>>361
いいから>>360を読め。
>>362
釣れるかい?

364 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 19:27:42 ]
ていうか>>360内の
www.kouno.jp/home/c_faq/c6.html#1
一番最初に出てる。

365 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 19:40:51 ]
>>362
return(1)を足したら動きました。返り値は無視できませんね。勉強になりました。

366 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 20:05:19 ]
配列の値がアドレスなのがいけないんだろう。
だからポインタと同じに見える。

367 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 20:07:58 ]
× 配列の値 (それはchar)
○ 配列名の値

368 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 21:29:31 ]
去年の秀逸な記事
ttp://s03.megalodon.jp/2008-0328-1911-56/builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm

369 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 01:27:00 ]
>>368
おお、恐ろしい。恐ろしい。



370 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 12:17:44 ]
ダメ初心者が初心者に教えてるのか…
> int main( void ) {
> int *n;
> *n = 5; /* ポインタ変数nに値5を代入 */

371 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 13:31:28 ]
コード例だけ見ると typoっぽいけど、地の説明文からして
どうもポインタを勘違いして理解してるっぽい。
この沖林正紀って人は、なんでこの程度の知識で原稿書いたんだろう
初心者レベルの駄文より、嘘を教える方が性質が悪い。

372 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 13:50:40 ]
>>370は初心者が陥りやすい間違いなので、ポインタの解説記事ならば間違えてはいけない個所。

記事の題名が「C/C++のポインタの機能--参照渡しのような処理」なので、JavaやLLから入って
来た人なのだろう。参照渡しでは初期化は不要だからね。

傍証
bookweb.kinokuniya.co.jp/htm/%89%AB%97懼ィ%B3%8BI/list.html

373 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 14:27:55 ]
参照渡しでも値渡しでも、callee は初期化不要では?

374 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 17:53:21 ]
>>373
372は、参照渡しということはcalleeの話だから初期化は不要と言ってるのであって、
参照渡し以外で呼び出されたcalleeが初期化が必要とは一言も言ってないよ。

375 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/28(土) 19:28:41 ]
glib-2.0のgstringってCで使う場合使い勝手とか負荷とかどんなもんなんでしょう
ポインタ配列とかリストとかもあるんなら使いたいのだけれど
仕様が微妙なのでばきばき使っている人の使用感が聞きたい


376 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 06:43:15 ]
以下をコンパイルしたのですが何も表示されません。
どうしてですか?

#include <iostream>

class H{public:H(){std::cout<<"hoge\n";}};

int main(){H h();}

377 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 08:19:51 ]
関数の宣言だから

378 名前:名無しさん@お腹いっぱい。 [2009/03/01(日) 08:55:08 ]
>>376
iostream.h じゃないの?
ヘッダーの拡張子 .h がなくて正常コンパイルできてないに1票。

379 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:07:01 ]
>>376
"\n" なんて使えたっけ? << std::endl でしょ?
改行が出力されず、行バッファがフラッシュされなかったから
表示されていないように思っただけでは?



380 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:13:46 ]
>>378-379
だから、「関数の宣言だ」と言ってるだろ。
int main() {
 int printf(...);
}
と書いてあるのと同じだよ。

381 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:15:46 ]
>>380
もちろん、main()関数は宣言してます。そういう問題じゃないでしょw

382 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:34:33 ]
おまえ、本当にバカだな。
printf()関数の宣言をしているのが見えないのか。

ホント、初心者の知ったかぶりって迷惑だよな。

383 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:36:10 ]
>>382
ワーニングを無視すれば printf() は宣言なしでもつかえますよ。
あと、質問はprintf()じゃないしw

384 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:36:34 ]
Hを返す引数の無い関数h()をmainの内部で宣言してる、と言われてるのに
知ったか初心者の癖に理解力ゼロだから困る。

385 名前:376 mailto:sage [2009/03/01(日) 09:38:23 ]
>>378-379
.h付けて、endlに直したら表示が出ました。
ありがとうございました。

386 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:38:31 ]
頭悪すぎだね。

387 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:41:43 ]
>>383
あなたC++って言語、知ってる?

388 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:44:01 ]
どこぞの独自拡張拡大解釈コンパイラしか知りません

389 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 09:47:40 ]
>>387
printf()が出た時点で C++の可能性はゼロでしょ。
C++ではprintf()の使用は禁止だし。



390 名前:名無しさん@お腹いっぱい。 [2009/03/01(日) 09:59:28 ]
ネタだよな?
まさかとは思うけど、本気で言ってるんじゃないよな?

これが初心者?
それとも老害?

391 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:00:33 ]
>>389
幾らなんでも、それじゃ釣れないだろ。

392 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:04:56 ]
main()がint型でありながら戻り値が省略可能な時点で、C++確定ですけど。

393 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:09:06 ]
>>392
つC99

394 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:13:41 ]
>>392
main()に限らず、何のint関数でも戻り値は省略可能。
ワーニングを無視するなら。

395 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:21:07 ]
>>394
えーとね、main()は警告なしで省略可能なんだよ。
言語仕様として決まってるから。

もちろんあなたはは知らなかったでしょうけどね。
あ、もちろんprintf()も言語(のライブラリ)に含まれてますよ。
当然ながら、宣言なしで使うことは出来ませんがね。

396 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:22:48 ]
>>395
つC89

397 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:23:30 ]
警告をワーニングって言うのもちょっと恥ずかしい。
別にウォーニングと言えってことじゃないけどね。
単に「警告」で済むんだから。

ま、恥はいくつかいても恥で一緒だけどね。

398 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:28:04 ]
>>396
つ 話の流れ
つ 空気

>>394
別にintに限りませんけど?
C(でかつ警告を無視する)なら。

399 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:32:21 ]
そもそも>>376でclassが使われていて明らかにC++の話なのに
何故か「printfが使われてるからC++の可能性はゼロ」となって
Cでの話にすり替えられちゃってるんだよな。
不思議。



400 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/01(日) 10:38:02 ]
>>395
printf()は宣言なしで使えるよ。
実際にコンパイルしてみればわかるよ。
即席で書き捨てソースを書く時によくやる。

宣言なしでは使えないのはputs()とかputchar()とか。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<113KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef