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


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

C言語なら俺に聞け(入門編)Part 104



1 名前:デフォルトの名無しさん [2012/07/15(日) 10:28:33.18 ]
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 103
toro.2ch.net/test/read.cgi/tech/1341059858/
★過去スレ
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
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 158代目
toro.2ch.net/test/read.cgi/tech/1339338438/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
codepad.org/
ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

596 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 11:41:26.22 ]
>>581
今はCでもハード記述出来るらしいが
ファームのC→アセンブラ(マシン語)みたいにC→HDLを生成する

597 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 12:39:31.83 ]
間違ったところで何の害もない

598 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 21:36:25.39 ]
>>596
高位合成で使われるのはCのサブセットだよ
オリジナルのCから、ハードウェアへの変換が
困難な仕様を削除されたものが多い

599 名前:デフォルトの名無しさん [2012/07/31(火) 22:22:11.19 ]
このスレ質問に答えてくれる率が極端に減ったな
誰も質問しなくなったwww

600 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 22:29:08.24 ]
俺がちょくちょく答えてるだろ
見逃してる質問があったら教えてくれ

601 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 22:36:11.40 ]
「情報弱者」と呼ばれないために 〜たとえ政治に興味がなくとも、これを知ることは国民 の義務です

farm8.staticflickr.com/7145/6520530187_c0c80ff8a7_b.jpg
farm8.staticflickr.com/7013/6719110227_2855a7ef07_b.jpg
farm7.staticflickr.com/6188/6138002658_85eb1d2445_b.jpg
farm8.staticflickr.com/7205/6887664245_d57b0f4279_b.jpg
farm8.staticflickr.com/7037/6891009867_1095f43d34_b.jpg

602 名前:デフォルトの名無しさん [2012/07/31(火) 22:37:30.55 ]
>>596
RTLな
language じゃなく level が変わらなきゃ意味ない

603 名前:デフォルトの名無しさん [2012/07/31(火) 23:04:22.77 ]
ある文字が値として入っているメモリを検出するプログラムってどうやりますか?

例えば前のプログラムでchar str="Orange";
みたいなプログラムを作って、実行終わって

どこかのメモリにOrangeという値が入ってますよね。
その番地を探すプログラムを教えて下さい。

604 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 23:14:45.03 ]
> どこかのメモリにOrangeという値が入ってますよね。

ダウトくせーな
OSがサッサと掃除してんじゃね?




605 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 23:24:01.17 ]
>>603
char str="Orange";

char *str="Orange";
の間違いだとして、
printf("%p\n", str);
でアドレスが分かる。

但しデバッグコードが入ったせいで、アドレスが変わるかもしれん。

後は、コンパイルオプションでマップファイルを出力させたり、nmみたいな
コマンドを使うとかかな。

606 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 23:31:43.42 ]
仮引数だったら・・

607 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 23:32:24.49 ]
>>603 パスワードロガーでも作る気ですか? いけませんねぇ。

608 名前:デフォルトの名無しさん mailto:sage [2012/07/31(火) 23:44:21.51 ]
/dev/mem でダメなら諦める

609 名前:デフォルトの名無しさん mailto:sage [2012/08/01(水) 00:25:08.36 ]
「前のプログラムが使っていたメモリ内容」が読めるなんてのは
セキュリティホールだっつーの。

610 名前:デフォルトの名無しさん mailto:sage [2012/08/01(水) 00:55:26.25 ]
>>603
よっ!変態くん!

611 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 12:26:32.72 ]
>>603
今どきではそうとう運が良くないと見れない。

プログラム起動時にメモリ配置が毎回ランダムになるよう
設定されているのがほとんどなので、スタックやヒープを
覗ける可能性がぐんと低くなった。
あとmalloc系は仕様はともかく実装上ゼロクリア扱いしてるはず。

612 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 12:34:07.51 ]
0じゃねーし

613 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 12:37:45.20 ]
んじゃナニよ


614 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 12:50:37.68 ]
フフフノフフフならVCでよく見る



615 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 13:29:50.45 ]
それはデバッグビルドだろ。

616 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 14:46:54.14 ]
うん

617 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 16:01:49.79 ]
BSD UNIXは互換性のため、スタックをゼロ初期化してたはず

618 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 17:15:39.15 ]
スライダーとプログレンスバーの動きを連動するプログラムの書き方をおしえてください


619 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 17:19:51.77 ]
プログレンスバー


620 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 18:19:40.52 ]
プログレスバーだったはずかし

621 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 19:09:57.36 ]
で、そのスライダーだとかプログレスバーだとかは一体全体どこの代物で?

622 名前:デフォルトの名無しさん [2012/08/02(木) 19:26:34.12 ]
フフフ

623 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:01:41.41 ]
ミマ礫ァ

624 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:12:29.96 ]
ふむふむ



625 名前:デフォルトの名無しさん [2012/08/02(木) 21:24:38.20 ]
printf("%f\n", 10 || 0);
って10のはずですが何故か0になります。何故でしょうか?
積ではなく和のはずです。

a=3.0として
printf("%f\n",++a);が4になります。何故でしょう?
++aはaをインクリメントするから++a自体は3でaが4だと思うのですが。


626 名前:デフォルトの名無しさん [2012/08/02(木) 21:25:12.29 ]
printf("%f\n", 10 || 0);
って10のはずですが何故か0になります。何故でしょうか?
積ではなく和のはずです。

a=3.0として
printf("%f\n",++a);が4になります。何故でしょう?
++aはaをインクリメントするから++a自体は3でaが4だと思うのですが。


627 名前:デフォルトの名無しさん [2012/08/02(木) 21:27:00.85 ]
int a=3;


printf("%d %d \n",++a,a);

結果 4 3


何故だ.......
++aしたのに何故aが3?


628 名前:627 [2012/08/02(木) 21:28:28.35 ]
わけてかくと

int a=3;

a++;
printf("%d \n",a);

このときは結果4になる....
震えがとまらない。怖すぎる。何故だ。

629 名前:627 [2012/08/02(木) 21:29:53.49 ]
int a=3;



printf("%d %d \n",a++,a);


3 3

えええwwwwwwwwww
まじで分からないので解説を。

630 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:30:18.30 ]
目星は付いてるけど規格票確認するのが面倒
誰かに任せた

631 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:32:36.36 ]
だれだよこんなアホ連れてきたのは
fuck(a,++a,++a)


632 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:34:03.70 ]
関数引数の評価順は環境依存
foo(a++@,a++A,a++B);

@→A→B とか B→A→@ とか順番は定まっていない

のでそんなことスンナ

633 名前:627 [2012/08/02(木) 21:35:00.31 ]
>>630
a++と++aの違いはどうでもいいです。

一番怖いのが


int a=3;


printf("%d %d \n",++a,a);

結果 4 3

分けて書くと

結果 aは4になってる

意味が分からない。

634 名前:627 [2012/08/02(木) 21:36:05.44 ]
>>632
なるほど

ってことは
a=3
++a;

printf("%d\n",a);

でも環境によっては3ってこともあるのでしょうか?



635 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:37:43.57 ]
>>633
今晩は馬鹿、エアコンのスイッチいれた?

636 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:38:00.11 ]
ぷぅ〜

637 名前:627 [2012/08/02(木) 21:38:56.52 ]
>>635
エアコンのスイッチって何でしょうか。

638 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:39:16.10 ]
>>634
それは無い
a=3 の次に ++a が行われて printf の引数に a を渡す

639 名前: ◆QZaw55cn4c mailto:sage [2012/08/02(木) 21:40:07.10 ]
>>625
>printf("%f\n", 10 || 0);
>って10のはずですが何故か0になります。何故でしょうか?

codepad.org/mDg8Dx8P
参考:codepad.org/vj989ZaR

10 にも 0 にもならないようだ。処理系はなんですか?

1) || は論理和、int で 1 を返す。
2) printf() は、第一引数と第二引数以下が完全にマッチしないと想定した結果を返さない。
ただし例外として float -> double の格上げ、あるいは int への格上げがある。
ちょっと複雑だが、こう考えるとよい。コンパイラは printf() を翻訳するとき、第一引数 "%f\n" のことなどさっぱり忘れて第二引数以下を翻訳する。
第一引数が %f だろうが %d だろうが無頓着、無視、無関心に、第二引数 10 || 0 を単独で存在するかのように翻訳する。

640 名前:627 [2012/08/02(木) 21:40:12.02 ]
>>638
ありがとうございました。

ところでprintf("%f",10 || 0);が0になるのは何故でしょうか?

641 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:40:18.78 ]
ぽぽぽぽーーーーーーーーーーーーーーーーん
ぽっぽぽぽぽぽ
ぽぽぽっぽ
ぽんぽぽぽぽぽ
ぽんぽぽぽ
ぽぽっぽぽぽっぽ
ぽんぽぽぽ
ぽぽんぽぽぽんぽぽぽぽぽぽ


642 名前:627 [2012/08/02(木) 21:46:35.79 ]
>>629
処理系はWindowsXPです。





printf("%f\n", 10%3-1.0 <4.0 ? 1 : 0);
の値も0になります。何故でしょうか?

10%3は1ですから 1-1.0<4.0で正しい。
正しいときは?の左側を表示する関数なので
1と表示されるはずなのに0です。
何故ですか?



643 名前: ◆QZaw55cn4c mailto:sage [2012/08/02(木) 21:49:44.82 ]
>>642
codepad.org/Xkkd3zds
0 になる可能性が想像できない。コンパイラのメーカーや種類を教えてください。

644 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:51:16.45 ]
%f で浮動小数点数として表示させようとしてるのに、整数値を渡してるから
%d にしろ



645 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:51:48.21 ]
夏休みだね

646 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:52:58.02 ]
>>637
頭熱暴走してないか?

647 名前:627 [2012/08/02(木) 21:54:33.31 ]
>>643
0ではなく0.00000ですね。
コンパイラはvisual studioです。
PCのメーカーは東芝で機種はdynabookです。


648 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:55:57.01 ]
VC++でビルド開始、ビルド失敗

前回成功時のファイルを実行

649 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 21:56:27.74 ]
エスパーが必要だな

650 名前: ◆QZaw55cn4c mailto:sage [2012/08/02(木) 21:58:23.01 ]
>>627, >>629
難しい話になりますが、「シーケンスポイント/副作用完了点」というキーワードが該当します。
www.kouno.jp/home/c_faq/c3.html#8

これを納得するには数々の経験が必要となりますので、当面の間は、関数の引数に ++ とか -- とかは使わない方針をとるのがいいでしょう。
f(a, b, c) なら c, b, a の順に処理されるコンパイラが圧倒的に多いしそうなる理由もある、これを仮定するのは非常にまずいとはいえ。

651 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:02:48.05 ]
printf("%f", 1);
>0.000000

652 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:22:10.94 ]
>>626
ttp://ideone.com/vYbQB

653 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/02(木) 22:25:05.75 ]
整数の1は (リトルエンディアンで) 以下のような並びになる。
00000001 00000000 00000000 00000000
これを浮動小数点と解釈して符号部、指数部、仮数部に区切りなおすと
0 00000010 00000000000000000000000
となる。
これは約 2.35e-38 というめっちゃ小さい値なので、 %f の書式で表すと 0.000000 となってまう、
ということなんじゃないかと思う。

654 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:28:58.65 ]
>>653
%fはdoubleだヴォケ



655 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:38:28.18 ]
printf("%f\n", 1);
printf("%f\n", 1.0F);
printf("%f\n", 1.0);
printf("%f\n", (int)1.0);

0.000000
1.000000
1.000000
1.000000

656 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:39:54.68 ]
意外と知られてないのが

j = 1, k = 3で

i = ++j, k;

とした時の i の値
実行せずに何になるか当ててみよう

657 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:41:06.97 ]
3

658 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:42:27.89 ]
2

659 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:43:05.05 ]
括弧でくくれバカ

660 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:44:31.88 ]
(i = ++j), (k);

661 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:45:39.31 ]
それ以前にこんな書き方をする意味がない。

662 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 22:48:08.90 ]
知ってる奴が知らない奴を見つけてニヤニヤする意味がある

663 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 23:03:24.39 ]
>>655
ttp://ideone.com/hxdVB
4番目でちょっと悩んじゃった
可変長引数は書式関係なくint(ex:4バイト)、double(ex:8バイト)、*(ex:4バイト)
でスタックに積むからゴミが残ってたんだよね

664 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 23:09:00.69 ]
ほんと仕様が煮詰められてない糞言語だな



665 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 23:24:42.30 ]
仕様が厳格に決まってないからこそ他言語との親和性が維持できることもあるんだよ。

666 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 23:27:46.58 ]
ないない

667 名前:デフォルトの名無しさん [2012/08/02(木) 23:36:19.28 ]
>>656 を厳格に 2 と答えられないどあほとの親和性は維持できなくていい
ちなみに問題文に誤りがあってセミコロンが足りないが、そういう問題じゃない

668 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/02(木) 23:43:57.23 ]
>>654
うわ┗(^o^ )┓ああああ┗(^o^ )┓ああああ┗(^o^ )┓ぁぁぁぁ┗(^o^ )┓ああああ┗(^o^ )┓

「ANSI C言語辞典」では float もアリって書いてあったのでそれを信用したんだが…。
gazo.shitao.info/r/i/20120802234040_000.png

JIS 規格にはそんなこと書いてなかった!!!
gazo.shitao.info/r/i/20120802234141_000.png

でもまぁ原理としては同じなのでそこらへんは柔軟に読み替えてくだせぇ。

669 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 23:50:18.11 ]
高度な柔軟性を維持しつつ
臨機応変に対応
ですね

すばらしい文言です
あなたを師と仰ぎ どこまでも付いてゆきましょう


670 名前:デフォルトの名無しさん mailto:sage [2012/08/02(木) 23:51:29.31 ]
含 風呂・トイレ

671 名前:デフォルトの名無しさん [2012/08/02(木) 23:55:03.45 ]
>>668
おまえさ、そんなの貼って誰かありがたがるとでも思っているわけ?
仮にいたとして、おまえと同類だけだぞ

672 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/02(木) 23:58:37.97 ]
>>669
銀英伝は二次創作をいくつかちょろっと読んだだけだが、
それは印象的な場面としてよく使われてるみたいだねぇ。

673 名前:デフォルトの名無しさん [2012/08/03(金) 00:01:03.25 ]
難しい漢字がボヤけてるのは何故?
見たこと無い漢字とか明らかに輪郭がくっきりしてないんですが。
何十年も昔のPCからそうだったんですか?


674 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 00:06:20.56 ]
>>668
ずいぶんと参考になりました。私はビット表現まで追いかけてなかったがばれてしまった‥‥‥。それはそれで一層いや一生の恥ですorz

それはそうと、それ、厳密な典拠は特定できていなくてちょっと困っています。
ISO/IEC 9899:1999 6.5.2.2.6
If the expression that denotes the called function has a type that does not include a
prototype, the integer promotions are performed on each argument, and arguments that
have type float are promoted to double. These are called the default argument
promotions.
で、これはプロトタイプでは ... で表現されているために「プロトタイプに含まれない式」になってしまった場合、その引数は float->double になってしまうようです。

問題は
If the function is defined with a type that includes a prototype, and
either the prototype ends with an ellipsis (, ...) or (略), the behavior is undefined.
がなんのことやらさっぱり。



675 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 00:06:29.14 ]
調子に乗って符号なし整数をなくしたJavaなんて言語もあったな

676 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 00:09:09.64 ]
アンチ


677 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 00:10:45.73 ]
インチ

678 名前:デフォルトの名無しさん [2012/08/03(金) 00:25:33.78 ]
ウソッキー

679 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 00:33:35.00 ]
printfで2進数表示お願いします。

680 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 00:44:42.57 ]
ideone.com/37iII

681 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/03(金) 00:59:57.45 ]
>>674
前者は省略記号 (...) とは関係ないんじゃないかな。
「プロトタイプを含まない型を持つ関数」というのは例えば
hoge();
というようなプロトタイプ宣言されている関数ということで、
これに対して
hoge(14, 1.24f);
というような呼び出しをした場合にはこの 1.24f は double に拡張されるということ。

後者については前者のようなプロトタイプ宣言があった上で
hoge(int a, double b) { /* 省略 */ }
というような定義であれば大丈夫なんだけど、
hoge(int a, ...) { /* 省略 */ }
という定義だとか
hoge(int a, float b) { /* 省略 */ }
とかだったら未定義になるということを言いたいんだと思う。

つまり前段はプロトタイプ宣言のことで後者は定義ってことで。


682 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 01:11:33.96 ]
>>680 感謝!

683 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/03(金) 01:16:42.64 ]
>>674
つまりはその項目は今回の printf の件とは無関係。
float は float として渡されるのであり、
受取った方がその型を知る方法は書式指定によると理解していいと思う。

684 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 01:33:00.41 ]
floatはdoubleとして渡るんじゃないかな〜



685 名前: ◆QZaw55cn4c mailto:sage [2012/08/03(金) 06:03:44.98 ]
>>681
規格の後段について、よく理解できました。ありがとうございます。
規格の前段の記述が hoge() のみの事情なのか printf() にも適用されるのかは、意見が相違するようですね。

>>683
ふむ。
しかしいまとなっては参考にするには古いK&R2=C89・付録A7.3.2 には次のとおりで(以下<>内はQZ)

省略形<=", ...">の場合、引数<実引数>の数はパラメータ<=関数定義やプロタイプ宣言での引数型宣言>の数と等しいかあるいはそれより多くなっている必要がある。
型が明示されているパラメータの後に続く引数は、前のパラグラフ<=K&R1の関数定義について>で述べた省略時の引数格上げの受ける。

とありC89 の場合であれば printf() のような可変長引数の、可変長部分、すなわちプロトタイプのない実引数は格上げを受ける、と読み取れます。
なお、K&R1 ではどんな float も double に変換されてしまうという(int main(); int c; char **v; だったし)事情が、
K&R2=C89 では可変長部分やプロトタイプの部分に限定されるようになったとは理解しています。

ともあれ、これに対応する C99 の記述はどこなのか、それとも C99 は自動格上げを行う範囲をさらにさらに限定したのかいまいち判然としないところです。

>受取った方がその型を知る方法は書式指定によると理解していいと思う。
これはK&R1の呪縛に囚われた身には辛い。>>639 と解釈してきた以上、printf() 第一引数の書式指定が printf() の第二引数以降の型を規定するとは考えにくいのです。

686 名前:685 mailto:sage [2012/08/03(金) 06:53:41.04 ]
訂正しておきます。
×K&R2=C89 では可変長部分やプロトタイプの部分に限定される
○K&R2=C89 では可変長部分やプロトタイプの明示されない部分に限定される

687 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 07:17:19.71 ]
gccなんかじゃ%fにintなら警告出してくれるけどな。

688 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 07:26:00.77 ]
printfが%fでscanfが%lfの理由

689 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 08:28:15.32 ]
何故このスレではscanfが人気なのか。

690 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 08:31:35.42 ]
入門だからでしょ

691 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 08:36:36.28 ]
scanfぐらい使いこなせるようになった方がいい

692 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 08:38:08.30 ]
↑アホ

693 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 08:40:40.74 ]
入門者なんだからしょうがない
入門者なんだから
入門者だと思って太めに見てやれよ
たかが入門者だぞ
入門者に目くじら立ててどうする
入門者は入門者だと割り切って接するのが一番の方法だよ


694 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 08:45:27.00 ]
入門者の入門者による入門者のためのスレ



695 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 09:58:20.70 ]
>694
入門者が返答してるの?

696 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 10:02:13.47 ]
少なくとも
scanf使いこなせ と言ってるお方は
そういう部類のレヴェルだろ
察しろよ


697 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 10:05:54.26 ]
scanfくらい使いこなせなくてどうするよ
エラー処理が不要なら簡潔に書けるし

698 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 10:24:29.69 ]
特殊なC言語入門
quaternion.pineappledesign.org/c


699 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 12:07:05.32 ]
scanf()はどうでもいいけど、sscanf()を一通り使えるようになっておくと捗るぞ。

それはさて、引き数リストを明示していない関数宣言のことは、プロトタイプ宣言とは呼ばないんじゃないのか?

700 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 12:13:53.68 ]
呼ぶんじゃないの?

701 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 12:28:17.60 ]
可変長引数である事を明示してるでしょ


702 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 12:41:59.03 ]
無宣言でいきなり利用
 printf("%f", 1.0F);

戻り値だけ宣言
 int printf();
....
 printf("%f", 1.0F);

引数も宣言してるけど、可変長引数でした
 int printf(const char *, ...);
....
 printf("%f", 1.0F);

703 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/03(金) 12:47:10.35 ]
>>699
それもそうだな。 たぶん呼ばない。

>>701
いや、引数リストが無いのは可変長引数であることを意味しない。

704 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 12:50:30.35 ]
プロトタイプなしとか、引数なしプロトタイプとか
いい加減C++っぽく統一してほしい



705 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 12:53:57.56 ]
ttp://ideone.com/I7Wir

706 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 12:54:16.15 ]
>>703
ん、「明示してない」ってのは「無い」っていう意味で言ってたの?


707 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/03(金) 12:58:08.12 ]
>>685
俺が根拠にしてるのは JIS なんだが、そこでの記述はこうなってる。

> 呼び出される関数を表す式が、関数原型を含まない型をもつ場合、
> 各実引数に対して整数拡張を行い、型 float をもつ実引数は型 double に拡張する。

日本語でもかなりわかりにく表現だな。

... で終わる宣言がプロトタイプを含まない宣言なのであるとすれば、

void hoge(float a, ...);

という宣言に対して

hoge(1.23f, 1);

と呼び出した場合でもこの 1.23f は一旦 double に拡張されるってことにならないか?
それも変な話だと思う。

更に読み進めていくと

> 関数原型宣言子における省略記号標記は、
> 最後に宣言されている仮引数の直後から実引数の型変換を止める。
> 残りの実引数に対しては、規定の実引数拡張を行う。

とあるので printf に渡した第二引数以降は型変換しないということだでいいんじゃないかな。



708 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 13:55:03.44 ]
>>702
原因はオーバーフローなのか
どうなのか仕組みから説明しないと・・・
そこが肝要だと思うのです。

709 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 14:24:31.25 ]
>と呼び出した場合でもこの 1.23f は一旦 double に拡張されるってことにならないか?
ならない。aという引数はプロトタイプを持つのだから。
プロトタイプを持たないのは...の部分。

>とあるので printf に渡した第二引数以降は型変換しないということだでいいんじゃないかな。
多分理解がおかしい。一部の変換(配列→ポインタ、関数→ポインタ、LValue→RValue)もするし、拡張もする。
例えば、
char *p="ZZZ";
printf( "%p", p );
はchar*を(LValue→RValueはするけど)void*へは変換しないで積む。
これが "実引数の型変換を止める"と言うこと(というか、変換のしようがない)。
# ちなみに、これは鼻から悪魔が出るかもしれないコード。%pはvoid*を要求するから。
で、
printf( "%f", 4.2f );
は "規定の実引数拡張"が行われてdoubleな4.2がprintfに渡る。

710 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/03(金) 14:45:28.91 ]
>>709
> ならない。aという引数はプロトタイプを持つのだから。
> プロトタイプを持たないのは...の部分。

俺もそう思うんだが、文章の曖昧さの話。
呼び出される関数が関数原型を含まない型をもつか否かで
挙動が分かれるようにも読める。

> 呼び出される関数を表す式が、関数原型を含まない型をもつ場合、
> 各実引数に対して整数拡張を行い、
> 型 float をもつ実引数は型 double に拡張する。

本当は

> 呼び出される関数を表す式が、関数原型を含まない型をもつ場合、
> (関数原型を含まない) 各実引数に対して整数拡張を行い、
> (関数原型を含まない) 型 float をもつ実引数は型 double に拡張する。

ってことでいいんかな。

711 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 14:58:07.68 ]
まぁそういうことだろうね。

712 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/08/03(金) 15:11:29.41 ]
>>709

> 多分理解がおかしい。
> 一部の変換(配列→ポインタ、関数→ポインタ、LValue→RValue)もするし、拡張もする。

言葉が足りんかった。

元々の QZ 氏の主張を要約すると
「省略子を使った場合はプロトタイプが無いわけだから float → double への変換が行われる」
というものだったけど、それに対して「省略子で書いたことによっては変換は起こらない」という
ことを言いたかったもので、一般的な変換についてまで否定したわけじゃないよ。


713 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 15:43:07.15 ]
昨日質問したんだけど

使わないような難しい漢字は何で輪郭がぼやけてるんでしょうか?
あれはどういうことですか?

C言語では最大何語の漢字をサポートしてますか?

714 名前:デフォルトの名無しさん [2012/08/03(金) 16:00:35.79 ]
>>712
わざわざコテつけて言うようなことじゃないよ。
>>713
お前、何人?



715 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 16:34:13.32 ]
>>714
俺はひとりに決まってるだろ

716 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 16:50:08.88 ]
半人前のクセに

717 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 16:58:35.10 ]
>>713
その質問のどこがCの質問?
それぞれGUI環境や文字コードの話だと思うのだが。

718 名前:デフォルトの名無しさん [2012/08/03(金) 17:44:24.51 ]
>>717
でもC言語のchar a;
aが67でしょ?
対応してるじゃん。
a='2000'だと何かの漢字になったりしないの?

719 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 17:50:03.84 ]
アンチって言ってるだろ
アホ


720 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 17:53:08.18 ]
ピーカーチューー!

721 名前:デフォルトの名無しさん [2012/08/03(金) 17:56:17.69 ]
char graph;

graph='F';



するとgraph=Fつまり文字を記憶する変数であり
C言語は数値だけでなく文字も記憶できるんですよね?

だから

graph='数';

みたいには出来ないのはなぜかなと。

722 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 17:57:21.45 ]
>>721
wchar_t があるだろ

723 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 17:58:47.57 ]
だから文字コードを勉強して来いと。

724 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:04:09.60 ]
どこからどこまでがC言語の仕事でOSの仕事なのか分からない





725 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:05:59.67 ]
>>724
おまえがC言語とOSがわかっていないことは分かる

726 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:06:17.55 ]
#include<stdio.h>あるじゃないですか
stdio.h自体はC言語と関係ないもんなんですか?


727 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:12:03.97 ]
あなたのおっしゃる〈関係〉とは一体どういう意味を含むのですか?
哲学的・形而上学的な観点から、
あなたは〈関係〉という概念を、どのように把握してらっしゃいますか?


728 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:12:14.15 ]
うん

729 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:17:43.74 ]
>>725
分からないプログラムは組めるけど機械的にやってるから
OSに命令を与えるための素材を集めてGUIによって可能にした系=C言語?



730 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:18:00.29 ]
日本語では、どれだけの単語が扱えますか?

731 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:22:52.67 ]
山は死にますか?

732 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:25:01.82 ]
髪は死にますよ
気をつけましょうね プログラマのみなさん


733 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:25:29.37 ]
>>729
冗談抜きで、日本語の表現力を少しは身に着けたほうがいいぞ。
ついでに、パソコンの仕組みも。

734 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:32:48.39 ]
無知が背伸びするとしばしばこうなる



735 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:36:56.00 ]
どういう経緯でC言語をやろう(この言い方も変な感じだが)と思ったのかも気になるな

736 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:37:22.18 ]
APIやdllについて聞いたら殴られそうな勢いだなw

737 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:40:06.08 ]
>>736
C言語以外の言語からも呼び出せますしー

738 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:43:12.26 ]
骨の髄までしゃぶってるのがC使いだから・・
C使いにAPI関を連断られると厳しいものがあるなw

739 名前:デフォルトの名無しさん [2012/08/03(金) 18:47:10.93 ]
日 本 語 で お k。

740 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:51:24.15 ]
ではC言語は何かと聞かれて答えられる学生はいるの

741 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 18:59:46.52 ]
OSに指示を出すための言語がプログラミング言語だと思うのですが
プログラミング言語はどうやって作るのですか?
今はWindowsがあるから何でも可能ですが昔の低水準マシンにおいて
はどうやって作っていたのでしょうか?




742 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:00:17.68 ]
哲学スレでやってください

743 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:05:44.90 ]
めんどくさそうな人間の相手は
誰もがやりたくない事なんだ

744 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:07:02.78 ]
うん



745 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:09:12.81 ]
古いgcc のソース追っかけたら?

メタなCを喰って実行コードを吐くコンパイラをCで書いといて
アセンブラ化
それで出来あがったコンパイラを使って
 複雑さを増したCで書かれたCコンパイラのソースをコンパイルして…
  それで出来あがったコンパイラを使って…

ってな感じだったような

746 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:17:53.67 ]
低水準でも言語だよ
プログラミング言語だよ
クソ機械語はプログラミング言語だよ

お前は情報科過程ひとおおり眺めてざっと理解してから質問しろ
時間の無駄だ


747 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:22:42.31 ]
むかしVBで挫折してて、今回C始めたらC面白いでやんの。
初めからCやっときゃよかったわ。

構造が分からずに手を出すより、構造を知りながら覚える方がおもろいな。

748 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:34:24.44 ]
おもろいね。

749 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:36:29.66 ]
そうでもない

750 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 19:36:33.60 ]
最初の頃やったPerlはわけわからんかった
今でもトラウマあってPerlには手を出してない

751 名前:デフォルトの名無しさん [2012/08/03(金) 20:09:42.58 ]
UnixとかだとCコンパイラがなくてもC言語組めたの?
Windowsだと環境入れないとだめでしょ


752 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:10:06.83 ]
>>749
そうでもないね

753 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:16:19.57 ]
アセンブリから機械語に変換するときにはコンパイラは無い
ハンドアセンブルしてた

実際、微細に渡る変換規則があれば
C言語もハンドアセンブルできる

というよりも
コンパイラの仕事は全て人力で、ノートと鉛筆ででもできる
でも 余りにも時間を喰うから *自動プログラミング* してる


754 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:21:42.23 ]
昔の人は16進で命令覚えてたって言うしな



755 名前:デフォルトの名無しさん [2012/08/03(金) 20:21:51.34 ]
UnixのCを組める環境って何がある?
Osに元から備わってたり?

756 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:24:17.21 ]
UNIXはCで書かれた
これがどういうことか一晩考えろ
夏だから時間あるだろ


757 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:25:44.78 ]
UNIXでCか。
"ken thompson" unix login
でぐぐると面白い話がかかるな。
Unixモンには当然知ってる教養レベルだが。

758 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:26:08.14 ]
>>756
それは、一部間違っている。
UnixはCで書き直された。という表現の方が正しいと思う。

759 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:29:26.50 ]
>>753
アセンブリの状態からでもアセンブルは必要なんだね
結局コンパイルと一緒かと

760 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:41:13.53 ]
Unixってタダでしたっけ?


761 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:42:30.51 ]
アセンブラ版はunicsだろ
無知供が

762 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:42:30.64 ]
学術だし

763 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 20:47:41.05 ]
>>760
UNIXは商標だから有料商品だよ。
Unix"系"はいろいろあるけど。

764 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:03:48.19 ]
>>761
教養がないので一応wikiで見てみたけど、
unicsからunixへの改名のタイミングは書いていないけど、
「the UNIX Programmer's Manualが1971年3月に出版された。」とあって、
「UNIXは1973年にC言語に移植された。」
とあるから、時系列的には
unixでもアセンブリ言語版ではあるんじゃない?



765 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:05:57.90 ]
Windows95の前でしたっけ?その頃もWindowsOSはありましたよね。
どんな環境でC言語プログラム作ってたんです?
インターネットもないため開発環境インスコできなかったと思いますが。

766 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:07:36.09 ]
どうだろうね

767 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:10:57.27 ]
>>766
平成生まれですか

768 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:14:02.57 ]
PC-98で5インチFD版のQuickCをですね

769 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:14:15.17 ]
>>765
DOS環境でもCコンパイラはいっぱいあったよ。
うちの専門学校では"Turbo C"だった。
あと、"Microsoft C" とか "Quick C"とかあったな。名前しか覚えていないけど。

770 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:21:17.97 ]
gnuが幅効かせる前のホビープログラマの無料環境は
16進直打ちでアセンブラ作ってプログラミング
アセンブラコードをバイナリデータで持ってBASICから呼ぶ

これ

771 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:25:00.19 ]
いま思えば、20年前の専門学校時代にC言語でオブジェクト指向的な事
(カプセル化・ちょうどアクアゾーンが流行り始めてた)や
ベジエ曲線とか結構面白いこと教えてもらってたな。

>>770
ベーマガとかで投稿していた方ですか?

772 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:28:48.55 ]
8086のセグメントとかFARポインタで挫折したな
intは16ビットですぐオーバーフローするし

773 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:29:27.85 ]
>>771
うん

774 名前:デフォルトの名無しさん [2012/08/03(金) 21:38:05.58 ]
BASIC の DATA 文がある意味アセンブラだったな



775 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:40:10.69 ]
マシン語ダンプリストとチェックサム
Bと8をよく打ち間違えた

776 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:41:20.85 ]
無期懲役食らった星島貴徳ってプログラマーとしてはかなり優秀だったと思います?


777 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:42:03.19 ]
一応、ここは、C言語スレだったりします。。。

778 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:42:29.42 ]
私もついに、中途半端な回顧厨が若造の戯言言っているようにしか見えなくなってしまったか。

779 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:47:43.31 ]
>>729
まずコンピュータの仕組みを勉強しなさい。
本屋にいけばその手の本が積んである。
それからOS、プログラミング言語とかより詳しいことを勉強したら。

780 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 21:59:47.75 ]
>>779
自作OSを夏休みの自己課題として作りたいのですがやはり困難を極めるでしょうか?
本当に簡素なOSで良いんです。

781 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 22:07:53.14 ]
>>780
仕組みが分かってないものどうやってつくるの?

プラモなら半完成品があるが

782 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 22:11:01.18 ]
だったらOSの作り方とか書いてある本読めよ

783 名前:デフォルトの名無しさん [2012/08/03(金) 22:17:48.08 ]
>>780
どっさりハードが絡んでくるから
この板の範囲を遙かに超えるぞ

半田ごては絶対やーよという向きには
VM という手もあるが、それはそれでまた侮れない

784 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 22:19:01.80 ]
OSて組み込み?



785 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 22:21:03.36 ]
OS作るだけならハードは要らない。
でも、既存ハード用のOSとなるとドライバがたんまり必要になる。
ドライバが要らないハードとなると、ワンボードマイコン辺りになるから
やはりハードの知識が必要に。

786 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 22:28:20.02 ]
>>780
それからソフトの作り方も勉強したら
なんとなくつくって動かしているじゃつかいものにならん

787 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 22:37:28.62 ]
すみません
enum {
StateNormal = 0,
StateAbnormal = 1 << 0,
StateA = 1 << 1,
StateB = 1 << 2,
StateC = 1 << 3
};
typedef int State;
みたいな列挙型があって、この型で表されるstateを調べたいとき、
排他でないA, B, Cはビット積&を取ればいいと思うのですが、
NormalかAbnormalかを調べるときはどうしたらいいのでしょうか?

788 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 22:55:43.95 ]
列挙型の使い方がまちがっとる。

789 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 22:58:19.83 ]
>>787
仕様次第。
Normalと言う状態は、
state == StateNormalなのかもしれないし、
Normal: (state & StateAbnormal) == StateNormalなのかもしれない。

Abnormalと言う状態は、
state == StateAbnormalなのかもしれないし、
(state & StateAbnormal) == StateAbnormalなのかもしれない。

そういう意味ではAについても
(state & StateA) == StateAなのかどうかは使用を確認しないとなんとも言えない。


790 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 23:00:18.13 ]
すみません。A, B, Cを無視してNormalかAbnormalかを調べること自体がおかしいという話でした。
Abnormalも含めてNormal以外がいずれも1でないとき、すなわち0のとき、かつそのときに限りNormalでした。

791 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 23:02:47.28 ]
言いたいことはよく判らんが、
state == StateNormalのときにNormalということなんだな。
使い方が巧いかどうかは知らんが、よくある使い方だな。

792 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 23:05:31.18 ]
>>789
ありがとうございます。
まさに
(state & StateAbnormal) == StateNormal
のときNormalだと思っていたのですが
state == StateNormal
のときだけがNormalだったようです。
ちなみに引っ張ってきたのは, Objective-CのUIDocumentStateからです。

793 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 23:46:00.65 ]
OSを作るだと?マルチタスクは超難しいぞ
卒論の範囲を遥かに超える

794 名前:デフォルトの名無しさん mailto:sage [2012/08/03(金) 23:55:02.97 ]
別にシングルタスクでいいじゃん。
そういえば20年くらい前に友達が卒論でCP/M80をマルチタスク拡張した
OS作ってたなぁ。



795 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 00:00:07.08 ]
何も考えずに排他制御すればとりあえず出来るけどデッドロック、スタベーション、レース状態は
普通に起きるんでそれを回避するAPIを作るのが面倒くさい

796 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 00:08:12.92 ]
別にOS自体はシングルタスクでもいいじゃん。

797 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 00:28:40.59 ]
>>792
いえいえ

798 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 01:23:08.33 ]
>>741
コンパイラ自身はどうやってコンパイルしたと思ってんの?

799 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 01:25:33.18 ]
最初のコンパイラは神が与えた

800 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 01:27:42.93 ]
コンパイラなんて使わずハンドアッセンブルしたに決まってんじゃん

801 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 01:32:13.55 ]
>>780
フロッピーから起動してコマンドを入力させる仕組みを作れるもんなら作ってみろ
もちろんDOSに頼らずにゼロからだ
OSを作るってそういうことだ
お前には無理

802 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 01:35:28.28 ]
コンパイラコンパイラも知らないガキンチョか

803 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 01:58:10.06 ]
あ〜あ…

804 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 02:15:44.48 ]
ゆとりの俺からすると昔の人は変態的



805 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 04:37:11.48 ]
変態に支えられて経済発展したんだな

806 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 06:11:08.26 ]
イタヅラし放題〜♪

807 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 06:54:13.25 ]
板ずらし放題


808 名前:デフォルトの名無しさん [2012/08/04(土) 12:12:02.91 ]
すみませんC言語は先週から始めた超初心者です
text="12345ABCDE"という文字列の中から『○番目』の文字のみ抽出する方法か関数があれば教えて下さい。
よろしくお願いします。

809 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 12:21:44.96 ]
>>808
ttp://ideone.com/NioEX

810 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 12:22:28.20 ]
text[i]

811 名前:デフォルトの名無しさん [2012/08/04(土) 12:30:33.38 ]
>>809-810

ありがとうございます!!!!!!!!!
こんな単純なことすら思い付かない自分が悔しいですorz
C言語なんてものに向いていないのかもと不安ですが、これからがんばってみます!!
またよろしくおねがいします!

812 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 12:41:14.67 ]
最初はみんなそんなもんだ。
習うより慣れろ。
バッドで100回素振りしたらそのうちヒットもでるさ。
それと同じ、何回コーディングしたかの違い。
不安なんて関係ないよ、丸写しでもいいから書いて
分からない部分を調べるかヘルプで読むだけの話。

書く、調べる、覚える。 これを繰り返すか繰り返さないかの差でしかない。

813 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 14:07:08.30 ]
ほっこりした。

814 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 14:41:34.72 ]
1
毎日、暗記するくらい手引書読む
何ページに何が書いてあるか覚えたら卒業
2
1で分からない部分を解説してあるサイトやら本を暗記するくらい読む
3.
難しい部分はとりあえず置いて理解出来るコードをひたすら書く
4.
ちょっとだけ難しいコードを混ぜて覚える

以下ループ
そうやってみんな中級者になっていく。

上級者になると言語の仕様書が頭の中に入ってる。
やってることは初心者の頃と同じ。1-4の反復



815 名前:433 mailto:sage [2012/08/04(土) 15:10:11.10 ]
みなさんのお力をお借りさせてください。

void Object ()
{
if ( switch_01 == 1 )
{
/* 構造体変数の宣言 */
struct s_int iobject ; // iobject


/* 構造体変数の初期化 */
// iobject.index = "1" ; // char型の文字代入ができない問題
iobject.x = 112 ;
iobject.y = 96 ;

switch_01 = 0 ; // 初期化スイッチを切る(0がOFF) これでもうこの処理には入らない
}


DrawGraph ( iobject.x , iobject.y , SPRITE [ 0 ] , TRUE ) ; // キャラクターを表示する
}

構造体変数の利用についてです。コメント等は読み飛ばして〜〜〜〜!
これで最後のDrawGraph(すいません。不可解な単語は全部ルーチン名です)の引数[iobject.x,iobject.y]が定義されていない、とコンパイラ君に言われるのですが、構造体変数って同じ階層で定義してその階層でしか参照できないのでしょうか?
ifを使わずに同じ階層で処理を実行すると普通にコンパイルを通過できたので…。この辺りのルールがCの教科書には載っていません><;

ちなみに構造体データ型定義は別で行っています。switch_01は変数ですが、if文内の処理が初期化の処理で1度だけ実行したかったのでフラグ的な役割をしているだけです。(これらは別にどうでもよかったf^^;

816 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:12:37.42 ]
>>815
>構造体データ型定義は別で行っています。
そのファイルをincludeしなきゃだめだよ

817 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:13:12.72 ]
s_intの定義はどうなってる?

818 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:14:44.26 ]
char* plist[] = {"aaa", "BBB", "ccc", "DDD", "eee", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

文字列のソートするプログラム書こうとして文字列の配列を作ろうとしたんだけど
char* plist[]ってことは添字なしだと char** plistになるのかな?

かといって↓のようにすると、その後上手く使えなくなって頭がドーン
char** pplist = {"aaa", "BBB", "ccc", "DDD", "eee", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

なんでこうなるの?

819 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:16:02.66 ]
// iobject.index = "1" ; // char型の文字代入ができない問題

820 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:17:19.80 ]
>その後上手く使えなくなって
下手になら使えるのか。 問題ないじゃん


821 名前:433 mailto:sage [2012/08/04(土) 15:22:51.45 ]
>>819
すいません。それは関係ないやつですf^^;ポリポリ

>>817
struct s_int {
char index ;
int x ;
int y ;
} ;

になってます。(ソースファイルの先頭に記述済み)

>>816
同じファイル内に定義済みです。。。


すいません。今ちょっとDrawGraphの直前に
struct s_int iobject ;
を入れたんですけどコンパイルしたら

Run-Time Check Failure #3 - The variable 'iobject' is being used without being initialized.

こんなダイアログが出ました。エラーなのでしょうが内容が分かりませんんんんん

822 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:26:53.40 ]
iobject.index = "1";

iobject.index = '1';

823 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:27:35.80 ]
文字と文字列の違いもわかってないのか

824 名前:433 mailto:sage [2012/08/04(土) 15:34:26.13 ]
>>822
ぎゃああああああ
ってな感じです。。。凡ミスワラタw

アリガトゴザイマス(´・ω・`)



825 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:51:43.11 ]
>>814
私はちょっとだけ順番違うかな。

1 まず、したい事がある。
2 その事を実現する方法についてのみ調べる。(手引書、参考書、サイト)
3 コードを書いてみる。
4 その後で、手引書、参考書、サイトをじっくり読む。
5 3のコードを改造してみる。

そんで、3-5のループって感じかな。

もちろん、初めに言語の仕様をだいたい知っていることに越した事はないんだけどね。

826 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 15:59:58.54 ]
>>825
俺もそんな感じ

827 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 16:11:17.13 ]
>>825
それだと
モチベは保てる利点があるが
やりたい内容が力量を越えて飛躍しすぎてると頭がオーバーフローし易いので
挫折する可能性もある。

反面、>814だとモチベが持続出来ないのでブン投げる可能もある。
モチベを保つために練習問題をコツコツやらないと厳しい。

コードを書いて前回より出来が良い物に改善、出来る範囲の文献を当たって
β0.01からβ0.02へ進化!手直し手直しを繰り返すのが良いとこ取りかもしれないね。
無理せずにコツコツと手直しが近道かもしれんね。

828 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 16:47:35.58 ]
>>825
今だとgoogleでこの手順もかなり楽になった
検索すると困ってる内容の解決策に簡単にたどり着ける

829 名前:デフォルトの名無しさん [2012/08/04(土) 16:53:12.03 ]
若い頃はモロ >>814 つーか 4. で無謀なチャレンジを楽しんでいた
>>825 へ徐々に移行、6. ありえないポカで自己嫌悪を追加

830 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 17:13:03.30 ]
>>818
ttp://ideone.com/sQD0C

831 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 17:13:20.34 ]
>>825の人気にshit
おれもこの方法だけど

832 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 17:26:26.71 ]
>>815
ttp://ideone.com/eYVNF

833 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 17:33:10.73 ]
>>818
ttp://ideone.com/8Y3XU

834 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 17:39:05.12 ]
つまり

int main(int argc, char *argv[]);
int main(int argc, char **argv);

が等価であるからといって

char *plist[] = {"foo", "bar"};
char **plist = {"foo", "bar"};

が等価にはならない



835 名前:デフォルトの名無しさん [2012/08/04(土) 17:41:37.11 ]
等価であるべきだとすごい剣幕で主張してるアホが昔いた

836 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 17:46:29.89 ]
 __           た わ し で す           --
     二          / ̄\           = 二
   ̄.            | ^o^ |                 ̄
    -‐           \_/                ‐-

837 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 18:07:49.79 ]
>>830
>>833
>>834
ありがとうごじゃいます

char *plist[] = {"foo", "bar"};
char **plist = {"foo", "bar"};

これが等価だって思い付きが大間違いだったんですねorz

838 名前:825 mailto:sage [2012/08/04(土) 19:28:06.02 ]
知らないうちに結構レスがついている。

ちなみに40代のおぢさんです。
ポンコツだけど。。。。

ただ、1の「したい事がある」は「お仕事でやらないといけなかった」ともいう。
そして、 2の調べるは、そんな人が作ったPGを引き継いだ人が大変なのは分かっていたから、当時はサイトが無かったので必死に参考書を読み漁っていた。

最初の入門書は林春比古さんの新C言語入門シリーズだったかな。(1991年版・今は新しいのが出てるはず)
未だにシニア編は手放せないです。
ビギナー編はどうでも良かったからどっかいっちゃったし、応用編は当時のDOS環境に偏り過ぎていたからね。

オライリーシリーズはポンコツには敷居が高かった。

って感じかな。

839 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 19:33:14.45 ]
林春比古の本に手をだしてはいけませんキリッ

840 名前:825 mailto:sage [2012/08/04(土) 19:54:02.56 ]
>>839
正直、他のシリーズの本(C++とかVBとLinuxとか)は知らないんだけどね。
Javaだけはちょっと読んだけど、Java自体、言語と言うより、「如何に用意されたAPIを使いこなすか」で、
しかもJavaのバージョンが上がりまくってAPIが変わりまくりだったので意味をなさなかったね。
持ってるのVer1.3対応版だよ。まったく意味がない。

C言語入門にしては当時(1990年頃)としては分かり易かったと思う。
今なら他にもいっぱいあると思うけど。

841 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 21:10:55.96 ]
初心者ならここじゃないの。副読本の感覚で
www9.plala.or.jp/sgwr-t/index.html
ポイント学習C言語

中級には物足りなすぎるだろうけど
初心者には孫の手みたいに痛し痒しに届きそうな内容じゃない。

この人の本は持ってないけどね・・どうなんでしょ。

あとは猫シリーズのWinプログラムやっとけば初級卒業なんじゃないのかな。

オライリーが鉄板だとは思うがあれ楽勝で読みこなせるなら初心者じゃない気もするw

842 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 21:20:59.81 ]
写経して即デバッガで追うのは楽なんだけど、時間が無い人向けだな。

843 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 21:57:11.99 ]
猫わかもいいんだけどちょっと古臭いのがね

844 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 22:05:21.58 ]
あれは猫ならわかるのかもしれんが、人間だとわからんのでは?
少なくとも俺は柴田望洋のほうがわかり易かったよ



845 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 22:05:48.79 ]
うん

846 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 22:39:17.97 ]
独習Cだろ最強は

847 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 22:58:50.44 ]
図書館で借りた入門書に誤字があり、その箇所で悩みまくり頭が沸騰するかと思った。
初心者だから自分が間違っているのか本が間違っているのか分からないから困る

848 名前:デフォルトの名無しさん mailto:sage [2012/08/04(土) 23:13:11.49 ]
困るね

849 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 00:00:44.45 ]
読んで覚えるだけの勉強しかしないバカにありがちだね

850 名前:デフォルトの名無しさん [2012/08/05(日) 00:03:30.81 ]
   ∧_∧  / ̄ ̄ ̄ ̄ ̄
  ( ´∀`)< オマエモナー
  (     )  \_____
  │ │ │
  (__)_)

851 名前:685 mailto:sage [2012/08/05(日) 01:58:36.19 ]
>>847
自分でうごかしてみるんだ。今は環境は簡単に手に入る。

852 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 04:42:27.49 ]
コンパイル環境あったところで、誤字が理由のエラーに悩みまくることはかわらないけどな

853 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 04:45:35.54 ]
昔よりはエラーメッセージが親切になった

何といっても読めば意味が分かることが多い

854 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 04:57:34.33 ]
開発環境やバージョンの違いで動かないこともあったりするから
手に負えない。



855 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 05:05:20.29 ]
初心者がエラーメッセージをちゃんと読んで理解するかよw

856 名前:685 mailto:sage [2012/08/05(日) 05:24:21.33 ]
>>855
ここに投げてみるとか、codepad/ideone の結果を貼り付けてみるとか。
初学者のはまる点であれば、ここでなんとかなるんじゃない?

857 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 05:35:40.54 ]
>>639
>>643

858 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 06:09:52.40 ]
しかし初心者ほど「エラーが出ます」としか言わないのであった

859 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 06:33:42.02 ]
C++のテンプレートとかエラーメッセージ自体が意味不明だったりするけど

860 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 06:34:54.30 ]
初心者の独学の話をしてるんじゃないの?

861 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 06:36:02.61 ]
ttp://ideone.com/XY4SB
初心者によくありがちなコンパイルエラー

862 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 07:34:32.47 ]
>>861
ねぇよ


863 名前: ◆QZaw55cn4c mailto:sage [2012/08/05(日) 09:45:29.15 ]
>>857
これは痛いところを突かれましたね。

確かにcodepad.org/mDg8Dx8Pは今でも説明不能。
手元のgcc4 は 0. 000000 を表示することから >>653 + double拡張が妥当ではあるのですが、
それじゃcodepad はどんなことになっているのか?

864 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 10:13:57.76 ]
%fで8バイト必要なのに4バイトしか積んでないから
つまり>>663の4番目と6番目



865 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 10:24:52.91 ]
% よりも - の方が優先順位が高いので

10 % 3 - 1.0 < 4.0 ? 1 : 0;



10 % (3 - 1.0) < 4.0 ? 1 : 0;

と解釈され、剰余演算子にdouble型を適用しようとするので
コンパイルエラーになるはずなんだけどなあ

866 名前: ◆QZaw55cn4c mailto:sage [2012/08/05(日) 10:41:02.47 ]
>>864
なるほど、いったんスタックをお掃除すると結果がかわるというわけですね。
>663 を codepad にかけてみました。
codepad.org/HIVDpg5z

1番目の結果を出すとき、ゴミはいったいなんなんだ?

867 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 10:48:07.87 ]
>% よりも - の方が優先順位が高いので
単項演算子の-と二項演算子の-との区別がつかないおバカさん?

868 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 10:56:01.96 ]
printf("%f\n", 10 % 3 - 1.0 < 4.0 ? 1.0 : 0.0);

とするとちゃんと1.000000と表示される所から見て、整数→倍精度浮動小数点数
への格上げはされてない(当たり前か)

869 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:22:28.30 ]
ttp://ideone.com/asu0T
printf()を連続で呼ぶと前の引数が残るからアクロバティックなコーディングが出来る
やらないけど

870 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:27:22.05 ]
>>866
ttp://codepad.org/tqrPGZ55

871 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:33:13.47 ]
>>869
これアクロバティックと言わずに「undefined」と言おうよ

>>870
intでdouble型の表示をしようとすると結果はやはり「undefined」だろうな

printf("%f\n", 1); とやってるのと同じだもん

872 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:51:59.18 ]
そういえばDOSの時代に関数ポインタを取得して、そこにディスク上から別の関数を
上書きして走らせるというキチガイ沙汰なプログラムが立派に商用に使われていたな

もちろん後から上書きする関数の大きさは前の関数よりもサイズが小さくないと
次の関数の頭まで消してしまうし、引数も同じにしとかないとコンパイルが出来ない

これも未定義なんだけど、メモリの少ない時代は仕方がなかったんだろうな

873 名前:デフォルトの名無しさん [2012/08/05(日) 11:54:53.01 ]
union
{
char c[8];
double d;
} u;
u.c[0] = 0x66;
u.c[1] = 0x68;
u.c[2] = 0x3c;
u.c[3] = 0x11;
u.c[4] = 0xc4;
u.c[5] = 0x59;
u.c[6] = 0x01;
u.c[7] = 0x40;
printf("%f\n", u.d);
u.c[0] = 0x00;
u.c[1] = 0x00;
u.c[2] = 0x00;
u.c[3] = 0x00;
printf("%f\n", u.d);

874 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 11:58:44.74 ]
>>872
メモリの無い時代、別にオーバーレイは常套手段だったろ。



875 名前: ◆QZaw55cn4c mailto:sage [2012/08/05(日) 12:35:11.54 ]
>>870
おおー、thx
このやりかた、デバッグにつかえるかもしれないね

876 名前:デフォルトの名無しさん [2012/08/05(日) 12:36:40.22 ]
条件A, B, Cそれぞれにture falseがあり、条件の組み合わせで
それぞれに違う処理をさせたい場合、どういった書き方をするんでしょうか
真理値表で言うとこんな感じです
A B C
F F F -> n = ture
F F T -> m = ture
F T F -> l = true
<略>
T T T -> s = true
ifを使って、
if (a == false) && (b == false) && (c == false)
{
...
などと書くのが普通でしょうか。コレだと条件がD, E, ...と増えていくと
収集がつかなくなりそうで不安です。いい方法か、検索に役立つキーワードが
あれば教えて下さい。

877 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 12:43:11.67 ]
ビットフラグ

878 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 13:13:19.18 ]
関数型言語ってCの事ですか?

879 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 13:18:05.02 ]
Cは手続型言語

880 名前:433 mailto:sage [2012/08/05(日) 13:23:49.15 ]
>>832
832さんありがとうございます!
そのページのソースコードに記述されているstatic(きおくくらす?で合ってるのかな…?)をヒントにコンパイルエラーの謎を解明できました。
具体的な原因としてObjectルーチンを何度も通すプログラムを書いており、

struct s_int iobject ;

という構造体変数宣言を何度も行っている事が原因だったようで、これをヘッダー部分(main()以前)に書く事でコンパイルが正常に通りました。
またひとつ勉強になりました。ありがとうございますm(--)m

881 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 13:39:50.96 ]
どういたしまして

882 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 13:47:48.09 ]
>>880
ttp://ideone.com/mZwCB
自動変数というのは自動的に領域の確保と解放をする変数で
初期化(あるいは代入)せずに参照すると値が不定となる

自動変数ではなく静的変数とするにはstaticを付けるかグローバル変数とする

883 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 14:56:49.16 ]
ズルして楽して覚えても結局は言語仕様に戻る罠。
面倒でも暇を見てヘルプや仕様を読む癖をつけるのが良いと思うよ。

884 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 14:57:59.08 ]
>>876
いろいろやりかたはあるが、条件を表にしておき関数ポインタを持っておくとか

オートマトンで使われるような状態遷移図にも似たような手法が使われる



885 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 15:29:21.79 ]
#include <stdio.h>

#define _TRUE 1
#define _FALSE 0

int fff(void) { printf("%s\n", __func__); }
int fft(void) { printf("%s\n", __func__); }
int ftf(void) { printf("%s\n", __func__); }
int ftt(void) { printf("%s\n", __func__); }
int tff(void) { printf("%s\n", __func__); }
int tft(void) { printf("%s\n", __func__); }
int ttf(void) { printf("%s\n", __func__); }
int ttt(void) { printf("%s\n", __func__); }

int (*tbl[2][2][2])(void) ={
  { { fff, fft }, { ftf, ftt }, },
  { { tff, tft }, { ttf, ttt }, },
};

int main(void){
  (*tbl[_FALSE][_FALSE][_FALSE])();
  (*tbl[_FALSE][_FALSE][_TRUE])();
  (*tbl[_FALSE][_TRUE][_FALSE])();
  (*tbl[_FALSE][_TRUE][_TRUE])();
  (*tbl[_TRUE][_FALSE][_FALSE])();
  (*tbl[_TRUE][_FALSE][_TRUE])();
  (*tbl[_TRUE][_TRUE][_FALSE])();
  (*tbl[_TRUE][_TRUE][_TRUE])();
  return 0;
}

886 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 15:29:52.05 ]
lenovo@LENOVO-0C414D26 ~
$ ./a.exe
fff
fft
ftf
ftt
tff
tft
ttf
ttt


887 名前:433 mailto:sage [2012/08/05(日) 17:00:58.51 ]
>>882
自動変数と静的変数というのは一般的に言われる「変数」を噛み砕いたものという事でしょうか?

初期化しないままに参照するのは結果的にエラーを吐くのは分かったのですが、
初期化したものをその後に参照しようとしても参照できない場合があるのはなぜなのでしょう

やはりCの仕様なんでしょうか…

888 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 17:11:38.25 ]
アドレスが違うか見てみれば

889 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 17:13:28.31 ]
"スコープ"とか"変数の寿命"でググれや

890 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 17:54:40.51 ]
>>887
ttp://ideone.com/xmVR8

>自動変数と静的変数というのは一般的に言われる「変数」を噛み砕いたものという事でしょうか?
変数には大雑把にいって自動変数と静的変数がある

>初期化したものをその後に参照しようとしても参照できない場合があるのはなぜなのでしょう
初期化したつもりで自動変数を初期化してなかったので
「変数'iobject'が初期化されてないのに使われようとした」というエラー(警告?)になったのだと思われ

Run-Time Check Failure #3 - The variable 'iobject' is being used without being initialized.

891 名前:433 mailto:sage [2012/08/05(日) 18:16:14.23 ]
返答早すぎですw多くのレスありがとうございます><
まだC言語は半月くらいの経験しかない身ではしたない部分があるにも関わらず多くアドバイスを頂き感謝し尽せないです。。。

>>890
初期化した場所が悪かったのか、初期化した後変数が別の変数に変わってしまったのか分かりませんがエラーの内容からすれば変数の初期化をする場所にルールがあるんじゃないか、とちょっと気づいてきました…(´・ω・`)

>>889
ブロックスコープという存在を知らなかった…orz
しかも私が今併用しているC言語入門書には書いていない件(tyow

>>888
ポインタですね^^
後々解析してみまぁす。ありがとうございます〜

皆様、貴重なご教示ありがとうございました。

892 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 18:32:40.71 ]
>>891
www9.plala.or.jp/sgwr-t/index.html

893 名前:876 [2012/08/05(日) 18:36:50.41 ]
>>877, 884様
とりあえず今回は3条件T/Fで設計してしまったので、
ビットフラグで行こうと思います。
検索したらUMLとか状態遷移とかを解説しているページが
多く見られ、大変参考になりました。ありがとうございました。

894 名前:デフォルトの名無しさん [2012/08/05(日) 18:45:27.84 ]
はじめまして。
<=====の行がうまくいかないです。アドバイスお願いします。

int *po,ban,i;
po=&ban;
for(i=0;i<5;i++){
*(po+i)=i; /*<=====*/
}




895 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 18:51:18.64 ]
とりあえず、がんばれ、と言っておこう

896 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 18:56:35.63 ]
>>894
ttp://ideone.com/g4bsT

897 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 18:56:57.06 ]
はじめまして。
<=====の行がうまくいかないです。アドバイスお願いします。

int *po,ban,i;
po=&ban;
for(i=0;i<5;i++){
*(po+i)<=====i;
}

898 名前: ◆QZaw55cn4c mailto:sage [2012/08/05(日) 19:08:48.26 ]
>>894
ideone.com/cV82Z

899 名前:デフォルトの名無しさん [2012/08/05(日) 19:20:02.69 ]
>>896
>>898
banを配列にしないとダメなんですね。
サンクス

900 名前:デフォルトの名無しさん [2012/08/05(日) 19:29:40.53 ]
自動変数は何が自動なんですか。手動変数もありますか。

901 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 19:30:21.98 ]
ぽいぽいPOI!!!
ふぉいふぉいFOI!!!
カネ返せFOI!!!
カネ返せPOI!!!


902 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 19:34:03.62 ]
全自動変数
半自動変数
手動変数

903 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 19:41:31.07 ]
変数がメモリ上のどこにあるのかを考えろよw
答えはそこにある。

904 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 19:46:12.93 ]
変数
固定変数
変動定数
定数



905 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 21:09:56.68 ]
ふひひ

906 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 23:53:22.62 ]
このスレ質問ても処理系は何?と聞いてごまかして答えてくれないよね。
専門知識を教えるのは億劫なんかね。

907 名前:デフォルトの名無しさん mailto:sage [2012/08/05(日) 23:56:26.74 ]
質問ても?

908 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 00:00:50.30 ]
>>907
ゴミは黙れ

909 名前:デフォルトの名無しさん [2012/08/06(月) 00:06:41.76 ]
>>907
茶化すなよ

910 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 00:53:54.49 ]
>>906
C言語は低レベルなので処理系聞かないと規格票の範囲でしか答えられないからです

911 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:05:43.22 ]
>>908-909
失せろゴミ

912 名前:デフォルトの名無しさん [2012/08/06(月) 01:29:45.60 ]
>>906
いや、お前がゴミだから。

913 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:50:31.12 ]
IDがでねー掲示板で何やってんだお前ら。。

914 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:51:54.79 ]
↑馬鹿



915 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 01:57:04.14 ]
('_')

916 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:08:19.48 ]
知識は出し惜しみすんなよクズ
共有しないと意味ねーだろ

917 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:10:22.41 ]
もうずっとプログラマ大杉

918 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:14:15.34 ]
共有()

一方的にもらうだけの乞食が

919 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:21:13.35 ]
処理系を知りたいならアセンブラ。
遠慮せずにそちらの世界へ。

920 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:22:09.03 ]
けんかしにここにきてるのかお前ら
そんなひまがあったら働け

921 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 02:30:41.89 ]
>>919
「処理系」の意味がわかってないような

922 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 04:52:17.60 ]
>>919
お前が一番分かってない

923 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 04:54:56.41 ]
>>921-922
ほう。
どうわかってないのか、正しくはどうなのか説明してみ。

924 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 04:56:47.56 ]
>>923
人に教えてもらう態度ではないな



925 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:00:05.49 ]
>>924
失せろゴミ

926 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:02:32.65 ]
>>919
お前が処理系を何だと思ってるか説明するのが先だ
ゴミしか言えないのかよ

927 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:08:28.84 ]
判断の根拠を言えよバーカ
わかってないのに判断したのかよ

928 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:09:47.45 ]
ゴミとバーカしか言えないのかよ

929 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:10:32.27 ]
アホ

930 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:15:13.50 ]
>>910>>919の処理系の意味の違いさえ分からないゴミカス乙

931 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:18:30.81 ]
ゴミとバーカとアホとゴミカスしか言えないのかよ

932 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:19:51.18 ]
お前らいい加減やめろよ・・・

933 名前:デフォルトの名無しさん [2012/08/06(月) 05:20:03.08 ]
しか言えないのかよしか言えないのかよ

934 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:27:39.39 ]
>>930
https://www.google.co.jp/search?q=%E5%87%A6%E7%90%86%E7%B3%BB



935 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 05:36:14.40 ]
>>930
>>919だけが「処理系」の意味を知らないだけで
他の人は全員「処理系」の意味を理解して、同じ意味で使っている。

936 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 06:56:49.37 ]
919に言ってやれよ

937 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:01:02.28 ]
919に言ってやれよしか言えないのかよ

938 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:26:09.48 ]
919に言ってやれよしか言えないのかよしか言えないのかよ

939 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:34:52.32 ]
919に言ってやれよしか言えないのかよしか言えないのかよしか言えないのかよ

940 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:40:55.44 ]
アホ自慢はもういいから。

941 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 07:57:40.08 ]
implementation 実装、処理系

942 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:00:57.45 ]
規格ではなく処理系でことなる部分がある(処理系依存の部分、未定義の部分)

943 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:04:17.84 ]
ダンプ解析しないのかな。

944 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:06:47.66 ]
童貞先生ゴミマ




945 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:11:40.73 ]
#include <stdio.h>
int main(void)
{
  int i = 2;
  printf("%d\n", ++i*(++i) );
  return 0;
}
/*
C:\work>gcc -Wall -o ppi ppi.c
ppi.c: In function `main':
ppi.c:5: warning: operation on `i' may be undefined

C:\work>ppi
16

C:\work>dmc ppi.c
link ppi,,,user32+kernel32/noi;


C:\work>ppi
12

*/

946 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:12:19.52 ]
ぶひ

947 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:19:45.88 ]
>>945 何したいんだ?
#include <stdio.h>
int main(void) {
  int i = 2, j;
  j = ++i;
  printf("%d\n", j*(j) );
  return 0;
}

948 名前:デフォルトの名無しさん [2012/08/06(月) 08:43:31.10 ]
>>947
アホは書き込むな。

949 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 08:47:57.14 ]
Qがコテを隠して朝からファビョっているのか

950 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 09:22:10.78 ]
アホは書き込むな。しか言えないのかよ

951 名前:デフォルトの名無しさん mailto:sage [2012/08/06(月) 09:34:44.57 ]
ぶひひ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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