- 1 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 20:41:54 ]
- C言語の*入門者*向け解説スレッドです。
初心者、初級者の方は他の質問スレのほうが良いかもしれません。 教えて欲しいのではなく宿題を丸投げしたいだけなら ↓宿題スレ↓へ行ってください。 C/C++の宿題片付けます 130代目 pc12.2ch.net/test/read.cgi/tech/1250204272/ ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること # サイズが大きい場合は宿題スレのアップローダ等を利用してください ・開発環境や動作環境も晒すと答えが早いかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 53 pc12.2ch.net/test/read.cgi/tech/1253110182/ 過去スレ makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
- 75 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 17:32:18 ]
- > やりたいのは、cの値をint*にキャストして表示したいということです
(int *)c こういうこと? *(int *)&c は cのポインタを int のポインタとして、指している場所に書かれている int 値
- 76 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 17:34:18 ]
- ・「cの値」は整数なので、ポインタにキャストすることはできない。
・cのポインタ、つまり&cをint *にキャストすることはできなくはないが、そのポイント先が安全と言う保証がないので未定義動作する。 ・その結果、2個目の%xで出力された16進数の下位2桁はどうやらたまたま'5'のアスキーコードのようだ。
- 77 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 17:38:55 ]
- >>74
12ffb8はスタックに残ったゴミで意味のあるのは35(='5')だけだ
- 78 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 17:41:05 ]
- >>76
>そのポイント先が安全と言う保証がないので未定義動作する。 キャストしただけなら問題ないが、キャストした瞬間に未定義動作ということだな。 >74の場合は落ちないようだが、環境によってはセグメンテーションフォルトで落ちるだろうし。
|

|