- 【初心者歓迎】C/C++室 Ver.94【環境依存OK】©2ch.net
314 :デフォルトの名無しさん[sage]:2015/04/04(土) 11:29:40.27 ID:GZJxoxqq - >310
>そんじゃあ構造体の領域空にしたいときどうすんの Cは知らんがC++では v = unko{}; // value-initialize または new(&v) unko{};
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
387 :デフォルトの名無しさん[sage]:2015/04/04(土) 12:04:14.16 ID:GZJxoxqq - >>385
basic_ostreamに basic_ostream<charT, traits> & operator<<(const void * p); が有るんだからいけるんじゃね
|
- ★★Java質問・相談スレッド172★★ [転載禁止]©2ch.net
772 :デフォルトの名無しさん[sage]:2015/04/04(土) 14:34:03.07 ID:GZJxoxqq - 入門書には書かれていないのでは?
言語仕様15章あたりか。破壊は起きない。 15.7.2 Evaluate Operands before Operation The Java programming language guarantees that every operand of an operator (except the conditional operators &&, ||, and ? :) appears to be fully evaluated before any part of the operation itself is performed.
|
- ★★Java質問・相談スレッド172★★ [転載禁止]©2ch.net
773 :デフォルトの名無しさん[sage]:2015/04/04(土) 14:51:06.24 ID:GZJxoxqq - あとは15.7.1に似た例がある。
int a = 9; a += (a = 3); 一つ目のaの読み出し→二つ目のaの代入→一つ目のaの更新 の順に行われる。
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
389 :デフォルトの名無しさん[sage]:2015/04/04(土) 15:14:43.29 ID:GZJxoxqq - >>388
そりゃcout<<&c は printf("%s", &c); 相当だからね。 printf("%x", &c) がやりたいなら cout << hex << reinterpret_cast<std::intptr_t>(&c) ちなみに%Xはサイズ指定が不正なので誤り。 %pもvoid*以外のchar*を渡してはいけない
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
398 :デフォルトの名無しさん[sage]:2015/04/04(土) 19:51:24.75 ID:GZJxoxqq - >>391
ISO/IEC 9899:2011 p7.21.6.1 The argument shall be a pointer to void. %pの引数はvoidへのポインターでなくてはならない
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
400 :デフォルトの名無しさん[sage]:2015/04/04(土) 20:05:19.59 ID:GZJxoxqq - >>399
どこを読んだらそうなるのよ argumentは実引数ですよ C/C++のポインターは型によってサイズも表現も 同じであることは限らないというのに
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
402 :デフォルトの名無しさん[sage]:2015/04/04(土) 20:23:42.18 ID:GZJxoxqq - >>401
>つまりvoidへのポインタとして処理する。 >こう考えるのが正しいよね?(´・ω・`) そうだな 規格上 実引数はvoidへのポインターでなければならないから 当然fprintfはvoidへのポインターとして解釈する。 だからchar*を渡してはならないのだが、何を言いたいのかわからん。 char*が8バイトでvoid*が16バイトの処理系があったとしたら void*にキャストして渡さないと明らかに誤作動するだろ?
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
404 :デフォルトの名無しさん[sage]:2015/04/04(土) 20:34:35.68 ID:GZJxoxqq - >そんな現実は宇宙の果てまで行っても、
>あり得ないから気にしなくてもいいよ?(´・ω・`) なるほど。規格上は許されていないことは理解できたんだな
|
- C++相談室 part116 [転載禁止]©2ch.net
456 :デフォルトの名無しさん[sage]:2015/04/04(土) 21:13:47.50 ID:GZJxoxqq - IBMの人と話すとCOBOLが現役と思ってる人が結構いて
カルチャーショックを受けるわ
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
408 :デフォルトの名無しさん[sage]:2015/04/04(土) 21:34:30.98 ID:GZJxoxqq - ISO/IEC 9899:2011 p7.21.6.1
『The argument shall be a pointer to void.』 どういう思考をしたらchar*の実引数を渡しても良いと解釈できるのよ 『void』の所は等幅フォントだぞ
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
420 :デフォルトの名無しさん[sage]:2015/04/04(土) 22:09:05.21 ID:GZJxoxqq - ISO/IEC 9899:2011のshallは処理系またはプログラムへの要求
であると4章の冒頭で定義されているよ。 結論としてそうなるとか意志という話ではなくて それが守られなかったら"behavior is undefined"になる という強い要求事項だし shallは処理系だけの要求ではない
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
423 :デフォルトの名無しさん[sage]:2015/04/04(土) 22:12:56.89 ID:GZJxoxqq - >>419
argumentってのは関数呼び出しの括弧内に書かれる式と3.3で規定されてるの。 だから『The argument shall be a pointer to void.』 は処理系への要求じゃなくてプログラムへの要求。
|
- 【初心者歓迎】C/C++室 Ver.95【環境依存OK】 [転載禁止]©2ch.net
426 :デフォルトの名無しさん[sage]:2015/04/04(土) 22:41:08.38 ID:GZJxoxqq - >>424
なるほどそんな規定があったのね。ありがと。 char*はvoid*と同じ表現になるので >>402はint*とかの例じゃないと駄目だね。
|