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


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

【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132



1 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:10:57 ]
このスレは標準Cのみの限定スレです。
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

C FAQ 日本語訳
www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
www.amazon.co.jp/exec/obidos/ASIN/4320026926/250-7563469-9920244

他の過去ログはここに
nssearch.hp.infoseek.co.jp/clang/
前スレ
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
pc11.2ch.net/test/read.cgi/tech/1170338926/


GUIなどの標準Cではできない事の質問、ソース丸投げ、宿題、書籍 は
専門の別スレッド↓があるのでそこへさようなら。

【初心者歓迎】C/C++室 Ver.42【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1188748806/
C/C++の宿題を片付けます 95代目
pc11.2ch.net/test/read.cgi/tech/1187944110/


【このスレ住人としての心得】
ビットシフトはなんの役に立つのでしょうか でググれ

296 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 01:19:03 ]
将棋なんて知らないもん!

297 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 08:03:43 ]
288はネットワークプログラミングスレに誘導すればいいのか?

298 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 12:20:31 ]
>>289>>291

>>288の質問って結局

---------------------hoge

(ここがバイナリデータ部)
---------------------hoge--

ってフォーマットからデータ部を切り出すテクニック、ってことだよ。
これ追い返してたら何も質問できないだろw
ネットワークプログラミングに誘導しても、向こうの住人も困るんじゃないか。
通信関係なら兎も角、タダの文字列処理だもんな。。。

299 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 12:25:29 ]
>>298
ここは言語テクニックを語るスレでも初心者教習のスレでもありません。
標準Cでの仕様や実装を云々するスレです。
まして「データを切り出す際の定跡」と言った、言語に依存しない抽象概念を扱うスレではありません。

300 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 12:33:23 ]
>>298
標準Cにおける文字列処理の質問じゃないでしょ。
少なくともhtmlについて殆ど何も知らない私にとって、>288に書かれた以外に
データを切り出す手段があるかどうかなんて見当もつかない。
「こうこうこういうプロトコルで来るデータがある、どう切り出すべきか」というなら
話は別だが、>288を読む限り単なる初心者質問だからこの辺りで充分だろ。
--
C言語なら俺に聞け(入門篇) Part 19
pc11.2ch.net/test/read.cgi/tech/1190342593/
スレを勃てるまでもないC/C++の質問はここで 3
pc11.2ch.net/test/read.cgi/tech/1187521676/
【初心者歓迎】C/C++室 Ver.43【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1190860744/

301 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:47:35 ]
スレタイトルをそろそろ変えたほうがいいかもしれんね
C規格なら俺に聞け!
とか

302 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:55:20 ]
C規格なら規格書嫁!とか
まあ、「規格」とか「標準」とかって言葉をいれておいた方がいいかもね。

303 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:59:12 ]
ISO/ANSI/JISがそういう意図を含んでいるはずだがね

304 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:00:57 ]
入門者がその意図をくめるはずもなく



305 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:13:30 ]
【ISO/ANSI/JIS以外の】 C言語なら俺に聞け! 【質問お断り!】Part 133

そもそも【】内を真面目に読む人少ないでしょ
>>1も読まれない、合致する質問もほとんど来ない
終了でいいんじゃね

306 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:14:16 ]
>>305
どう考えても字数制限引っかかるだろうが。あほか

307 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:18:49 ]
C言語なら俺に聞け(入門篇) Part 19
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 132

上はコード質問可で、下は規約の解釈限定か。なかなか難しいなwww

308 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:20:03 ]
そんなのにマジレスされてもなあ
頭大丈夫?

309 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:20:51 ]
ごめんごめん
>>306の頭のことね

310 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:22:39 ]
C言語規格議論厨隔離スレ
でいいじゃん

311 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:29:56 ]
つーかどう考えても
ISO/ANSI/JIS
これいらないだろ。
取っちゃえよ。

標準Cなら俺に聞け!

テンプレ:
Q標準Cって何?

312 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:32:31 ]
切れちゃった。まあいいや。
>>2の心得とかも必要ない。誤解されるだけ。

313 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:43:43 ]
そりゃそうだな。
そもそも定義にうるさいはずの連中がなんで「C言語」とか「標準C」とか「C」とか
いちいち呼び方変えてるんだよ。
アホか。

314 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:00:31 ]
>>305
>俺に聞け!

>質問お断り!
はねえだろw



315 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:05:12 ]
【A】 B 【C】
とあったら、普通はBが正タイトルでACはサブタイ。ACは繋げて読む事が多い。
AやCに重みがあるスレはネタスレと決まっています。

316 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:10:12 ]
「標準C限定」ってのは、コーディングの際に標準Cを逸脱しないって
意味だと思ってたんだけど、違ってたんだな。
「標準Cそのものに関する質問限定」ってことだったんだねw


317 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:13:35 ]
>>315
ここってネタスレだったんだ
納得ww

318 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:18:29 ]
>>316
フツーに考えて、規約の質問だけでpart132まで行くはずもなく……

いつの間に乗っ取られたんでしょうね。

319 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:19:28 ]
>>316
規約に全く関係ない質問なら、他に質問スレたくさんあるからそっちへ行ってくれればいい

320 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:20:44 ]
>>319

321 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:28:23 ]
初めて家族でF1観戦をしてきたのですが、子供がバスの中でお漏らししてしまい
回りの皆様に迷惑をおかけしました、同乗していた方申し訳ありませんでした

322 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:30:36 ]
>>321
最後のマッサやばかったなw
あれは伝説に残る

323 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:40:04 ]
この流れは>>294を流そうとして必死なのか?

324 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 16:53:01 ]
ビール 5000ペリカ
カキピー 3000ペリカ
オムツ 20000ペリカ




325 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 02:13:22 ]
F1弁当 100000ペリカ

326 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 13:47:11 ]
なぜここでゆでが

327 名前:デフォルトの名無しさん [2007/10/01(月) 14:20:03 ]
妙な流れで忘れ去られている >>250 だけど、
非負の値だけの場合
「二つの型において同じ値の表現は同じとする」(6.2.5 型)
負の値も含まれる場合
6.2.6 型の表現 の 6.2.6.2 整数型、により、負の値の表現は
処理系定義となっているので、結果は処理系定義

だと思う

328 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:28:59 ]
6.5.3.2 アドレスおよび間接演算子
正しくない値がポインタに代入されている場合,単項*演算子の動作は,未定義とする。

適合しない型のオブジェクトへのポインタが正しくない値と考えるなら未定義という
こともできないかな?
(83)の注釈にいくつか正しくない値の例があるがこれがすべてだとは言っていないようだ。

329 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:51:48 ]
内容:
作業時間48時間くらいで出来るC言語使った初歩レベルで作れるプログラムない?

都合よすぎかもしれないんだが、1年の節目としてなんか作れと先生に言われてるんだが
いい案がまったく出てこない、そういう例をまとめたサイトとかあれば最高なんだが。

330 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:53:34 ]
ちとコピペミスった申し訳ないorz

内容は時間内に作れれば何でもいいです。

331 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:55:47 ]
echod

332 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 18:57:58 ]
>>329
学生の1年目なら hit&blow
社会人の1年目なら 住所録(最大件数はメモリの許す限り無制限、10万件程度のデータに対して検索1秒以内)
くらいかな?

333 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 19:39:45 ]
>>330 >>1 を読め
>>331>>332 スレ違いに反応しない

334 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:52:49 ]
指定されたディレクトリとその下層にあるファイルの中から
指定された名前の関数定義を探し当てるプログラムというのはどうかなッ



335 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 20:59:58 ]
>>333
申し訳ない。
>>331>>332
ありがとうございます。

336 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:54:24 ]
宿題スレに行って他人の宿題盗ってくれば?

337 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 00:13:55 ]
後で苦労するのは俺だし授業で時間取ってくれてるからその時間暇になるわ。

338 名前:デフォルトの名無しさん [2007/10/11(木) 14:26:34 ]
main()
{
int i;
int a[2][10];

for( i = 0; i < 10; i++ )
{
a[1][i] = i;
a[2][i] = i;
printf("i=%d j=%d\n",a[1][i],a[2][i]);
}
printf("\n");
printf("i=%d j=%d\n",a[1][1],a[2][2]);
}

Visual C++ 2005 Express Edition です。
これをコマンドプロンプトを使ってコンパイルすると、
結果表示後「問題が発生したため・・・」のエラーがでます。
どこかおかしいところはあるでしょうか?

下のprintf文2つは実行確認用です。

339 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 14:33:04 ]
>>338
>a[2][i] = i;
範囲外


340 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 14:40:34 ]
「Visual C++ 2005 Express Edition です。」と断らなければいけない
レベルの質問は基本的にはこのスレの対象範囲外

341 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 20:52:46 ]
まあ内容自体は処理系関係ないがな。

342 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 20:53:42 ]
だからこそ環境を書く時点でわかってない事の証左

343 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 13:27:48 ]
fopenで開いているファイルの大きさを切り詰める方法を教えてください。
一時ファイルとして使ってるんですが、自前のデフラグで前に積めた時、
後ろのゴミを消したいので。


344 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 13:40:08 ]
「C言語」で引っかかるスレで質問できそうなのがここしか見つからないのが問題
限定的な話題扱うならスレタイ自重しろよボケが



345 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 13:54:09 ]
なら、次スレからJISに合わせて「プログラム言語C」にするか

346 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 13:55:40 ]
〜なら俺に聞け がよくない。

347 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 14:19:14 ]
初心者お断りってスレタイで明言すればいいじゃん。きっと過疎って誰も来なくなるよ。

348 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 14:24:04 ]
C言語なら俺に聞け(入門編)があるのになぜそっちに行かないんだろう

349 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 14:26:15 ]
>>343
マルチすんな。あっちで回答しておいた。

350 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 14:26:48 ]
>>347
願ったり叶ったり。

351 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 14:54:40 ]
>>348
全角厨しか引っかからないな
愛用のかちゅ〜しゃで確認

352 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 15:10:16 ]
>>351
JaneDoeViewだと引っかかるから気がつかなかったよ
じゃぁこのスレも全角にすれば問題解決だな

353 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 17:14:58 ]
入門者のくせに「入門」で検索しないのか

354 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 19:43:13 ]
「入門」で検索って、しないでしょw
言葉使う側のオナニー



355 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 19:49:16 ]
ほんとスレ立て下手糞だね。
毎回こんな事で揉めるのは双方不愉快になるし時間の無駄。
このスレの存在自体迷惑だし削除した方がマシだよ。


356 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 21:09:55 ]
お前が立てればいいんじゃね?

357 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 21:10:16 ]
じゃ、[標準C限定、C++不可、初心者お断り]ってスレタイに明記しとけ。

358 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 21:13:36 ]
テンプレも読まない連中だから無駄な気もするな

359 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 22:17:28 ]
>>355
>このスレの存在自体迷惑だし
どんな迷惑を被ったのかkwsk

360 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 00:44:03 ]
調子こいて答えたら、規格に基づいて袋叩きにされた

361 名前:デフォルトの名無しさん [2007/10/15(月) 23:21:44 ]
volatile int v1, v2;
int x = v1 + v2;

これは推奨できないらしいですが、
どういう理由なんでしょうか

どうやらvolatile変数の参照は副作用を持つかららしいのですが、
具体的にどのようなケースがあるのでしょうか


362 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:25:55 ]
>>361
式 v1 + v2 の v1 と v2 のどちらが先に評価されるか不定だから。

363 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:37:50 ]
言葉足らずでした
おっしゃる通り、評価順が不定なのはわかったのですが、

v = f() + g(); みたいなケースは
f()やg()内で副作用のある処理が行われたんだろうな〜
(グローバル変数をいじってるとか)
と想像はつくのですが

volatile変数の場合,
v1とv2が評価順に依存しているケースがあるって事なんでしょうか
その具体例が思い浮かばないです



364 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:40:03 ]
>361

ググりましたが、volatile修飾子はコンパイル時の最適化を抑制する修飾子とのこと
たぶん、排他制御の二重ロックなどの冗長に見える部分の最適化を止めたいのでは?
DOSのシングルスレッドなプログラムしか組んだことないからよくわからないが…

itref.fc2web.com/c/index.html#volatile




365 名前:364 mailto:sage [2007/10/15(月) 23:41:50 ]
質問の勘違いしてました。御免なさい
 m(_ _)m

366 名前:デフォルトの名無しさん [2007/10/15(月) 23:46:52 ]
#include <stdio.h>
#define N 5
int main(void){
int data1[]={1,3,5,7,10};
int data2[]={2,4,6,8,9};
int data3[]=0;
int i = 0;
int j = 0;
if (data1[i] >= data2[j]){
data3[i + j] = data[i];
i++;
}
if (data2[j] > data1[i]){
data3[i + j] = data2[j];
j++;
}
else return 0;
for (i=0;i<N;i++)
printf("%d",data3[i]);
return 0;
}

何がおかしいですか?

367 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:47:42 ]
>>366
int data3[]=0;

368 名前:デフォルトの名無しさん [2007/10/16(火) 00:13:38 ]
>>367
どうすればいいですか?

369 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:19:25 ]
>>363
未初期化の変数のロケーションを、必ず、読む、というコードが生成される、はず
規格では未初期化の自動変数を読んだ場合のふるまいはどうだっけ?

実際、どういう場合にまずいかというと
処理系(ここで言う処理系にはOS以下メモリやプロセッサまで含む)によっては
プロセスが、まだ書いたことのないロケーションを読もうとすると、メモリの
ゴミあさり(他のプロセスがパスワードとかを残してたりするの探す)と判断されて
例外で落とされるかもしれない、とか

370 名前:361=363 mailto:sage [2007/10/16(火) 00:22:31 ]
あぁぁぁすいません
変数は初期済みという前提でおながいします

371 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:23:05 ]
>>368
int data3[N]={0};
他にもおかしいところがあるかもしれないけど見てない

372 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:26:17 ]
>>363
volatileオブジェクトは例えばプロセッサの内蔵タイマのようなリアルタイムに値の変化するものを指しているかもしれない。

373 名前:デフォルトの名無しさん [2007/10/16(火) 00:27:16 ]
ありがとうございます。
そこを直してもまだ1つエラーがありました。
data3[i + j] = data[i];
ここらしいです

374 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:27:36 ]
>>363
メモリマップド I/O だな。読んだだけでチップの信号が変わるとか。



375 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:28:33 ]
>>373
エラーメッセージ嫁。
読んで分からなかったらエラーメッセージ添えて聞け。
ここはエスパーごっこするスレじゃない。

376 名前:363 mailto:sage [2007/10/16(火) 00:29:41 ]
>>372
>>374
なるほど。ハードウェア絡みですね

確かに読むだけでデバイスの状態が変化する可能性がありますね

ありがとうございました!

377 名前:デフォルトの名無しさん [2007/10/16(火) 00:31:43 ]
>>375
すみません。
エラー E2451 babble.cpp 10: 未定義のシンボル data(関数 main() )
だそうです。

378 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:34:28 ]
>>377
dataは1〜3だろ、無印は無い
たぶんdata3[i + j] = data1[i];

379 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:38:27 ]
>>377
なんでそこまで言われて気づかないんだ?

380 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:40:35 ]
BCC はこれがコンパイルエラーじゃなくてリンクエラーになるのか。恐ろしいな。
っていうか悪いことは言わないから VC++ 2005 EE か Cygwin GCC にしとけ。

381 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:42:08 ]
いくらBCCでもコンパイル通らないだろ

382 名前:デフォルトの名無しさん [2007/10/16(火) 00:43:00 ]
完全な見落としですね…
すみません。ありがとうございました

383 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:58:14 ]
>>371

Cの配列は自動で領域拡張してくれないからdata3のメモリ領域は必ず確保することが必要だと。
data3[] = {0};
だとdata3の配列の長さは1です。今のままだと条件によってはバッファーオーバーランします。


384 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:10:34 ]
たまたま質問が標準C以内のものだったら回答してるって感じだな
>>366なんか標準Cと何の関係もない、ただのデバッグ依頼だろ
ちゃんと切り分けろよ



385 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:10:34 ]
>>383
Nがわざわざ定義してあるだろ

386 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:20:08 ]
>>371
現状の結果は data3[] = {3,*,*,*,*};
となる。*部は未定義かつ異常アクセス。
このデータの場合読み込みしかしていないが
二つのif条件が共に満たされている場合始めの*に書き込み
Windouwsなら共有違反のエラーダイアログが出て強制終了されると思います。



387 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:24:34 ]
突っ込むの面倒だし放置でいいかな?

388 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 01:27:28 ]
なんでいきなりBCC

389 名前:384=386 mailto:sage [2007/10/16(火) 21:29:10 ]
一つ見落としてました御免なさい…

390 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:39:29 ]
ぬるぽ

391 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 23:56:21 ]
ガッ

392 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 02:01:37 ]
int a = -1;
unsigned int b = a;
こうするとbは標準Cならどんな環境でもUINT_MAXになるんですが

unsigned int b = (unsigned int)a;
こうした場合って、このキャストは
(1)aのビットパターンを無理やり unsigned int として解釈するのか (C++のreinterpret_cast)
→負数の表現が2の補数なら UINT_MAX
 1の補数なら UINT_MAX-1
 絶対値と符号フラグなら…いくつだ?

(2)aをunsigned int に変換するのか (C++のstatic_cast)
→環境によらず UINT_MAX

どっちでしょうか?
あいにく手元には負数の表現方法が2の補数の環境しかないので、確かめられません

393 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 02:06:39 ]
って、>>189に書いてある説明文に思いっきり
(unsigned int)-1 って書いてあるな…

394 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 02:16:57 ]
>>392
C の話は解決したとして、 C++ の reinterpret_cast の理解が間違ってる。
reinterpret_cast で int → unsigned int の変換はできない。
reinterpret_cast による変換結果はすべて実装依存。ビットパターン云々とは言えない。



395 名前:デフォルトの名無しさん [2007/10/26(金) 12:00:55 ]
>>364 volatile修飾子は、組み込み用プログラムでは多用するな。

    最適化では、値を読むことしかしてない変数は無駄なコードとして
   削除されてしまう。
   
    しかし、メモリマップドI/Oでは、I/Oのレジスタ類は変数として
   定義され、その内容の変化のみをチェックする処理は多い。 その様な
   変数には、volatile修飾子をつけないと最適化で消されてしまって
   処理が実行されない。 Cソース上では存在するが、機械語コードでは
   存在しなくなっている。 これを防止するのが主な使い方だな。


396 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 14:43:41 ]
>>395
それで思い出したがCPU自体にアトミックな操作ができない物があり、
そういうCPUではvolatileを完全に実現出来ないと聞いた。

具体的には16ビットCPUで32ビット変数を扱うと完全なvolatileには
ならない。16 + 16に分けて2回読み書きするためで、その間に割り込み
が入って内容を変更されてもCPUはそれに気づけない。






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

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

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