1 名前:デフォルトの名無しさん [2007/05/08(火) 19:39:26 ] C言語の入門者向け解説スレです。 ・C++言語はスレ違いです。 ・分からない事をなるべく詳しく書いて下さい。 ・ソースコードを晒すと答えやすくなるかもしれません。 ・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。 前スレ C言語なら俺に聞け(入門篇) Part 11 pc11.2ch.net/test/read.cgi/tech/1176800483/ 過去スレ Part 1 ttp://pc8.2ch.net/test/read.cgi/tech/1146700389/ Part 2 ttp://pc8.2ch.net/test/read.cgi/tech/1153818463/ Part 3 ttp://pc8.2ch.net/test/read.cgi/tech/1160682950/ Part 4 ttp://pc8.2ch.net/test/read.cgi/tech/1162999861/ Part 5 ttp://pc8.2ch.net/test/read.cgi/tech/1165022193/ Part 6 ttp://pc10.2ch.net/test/read.cgi/tech/1167325490/ Part 7 ttp://pc10.2ch.net/test/read.cgi/tech/1170064980/ Part 8 ttp://pc11.2ch.net/test/read.cgi/tech/1171946674/ Part 9 ttp://pc11.2ch.net/test/read.cgi/tech/1173284217/ Part 10 ttp://pc11.2ch.net/test/read.cgi/tech/1174290325/ 関連スレ C/C++の宿題を片付けます 86代目 pc11.2ch.net/test/read.cgi/tech/1176996941/ くだすれC言語(初心者用) Part.2 pc11.2ch.net/test/read.cgi/tech/1172099763/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/l50 はきだめC/C++下級者の質問箱 2 pc11.2ch.net/test/read.cgi/tech/1156206091/l50 【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
855 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:01:53 ] >>854 残念ながら制御文字であって \0 は便宜上表示できない制御文字の代用で 使っている文字だ。値ではない。値について理解していない馬鹿は失せろwwww
856 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:02:30 ] >>855 規格票の 6.4.4.4 文字定数を 100 回読んでこい。 あ、構文規則の読み方も分からない低学歴なのか?
857 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:05:26 ] こういう話題であげあしの取り合いになるのは宿命なのか
858 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:05:59 ] > 例 1. 普通、ナル文字を表すために表現 '\0' を使う。 くどいようだが自分で墓穴を掘ってそのままあの世へ行け。 二度と人間界に戻ってくるな。これが読めないなら日本語を勉強してから出直せ。 そこにある \0 は紛れもなく \ と 0 を並べたそれぞれが文字であり、組み合わせて値としたものではない。 これ以上理解できない曲解しかしないやつは放置するね。 値じゃないのは事実。文字コードは便宜上人間が割り当てたもので Aそのものが値を持つとかないから。AはA。人間が作った文字コード表に 電子計算機が持つ基本の数値を割り当てただけだから。
859 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:06:37 ] とうとう規格票に文句付け出したよwwwwwwwwwwwwwwwwwwwwwwww
860 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:07:19 ] 盛り上がっていいじゃない
861 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:07:32 ] >すべてのビットが 0 であるバイトをナル文字という。 これが見えないのか?
862 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:07:39 ] char a=0; の a を %c で表示すると、というか表示はされないが空文字が参照される。 a='\0'; とした場合、明らかに文字データを使っているんであって a=0; のような値は使われていない。ちゃんと文字データと値の違いを理解しましょーね 大学未満w
863 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:10:03 ] >単純文字定数は、型 int をもつ。 >1 バイトの実行文字に対応する単一の文字を含む単純文字定数の値は、 >対応付けた文字の表現を整数として解釈した数値とする。 これも読めないのかな。
864 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:10:53 ] 誰かさんは制御文字の代用で使われている \ と 0 という2つの文字をくっつけると 値になっちゃうらしいよ?w どこをどう見ても \ も 0 もつなげても \0 という 文字 です ありがとうございました。文字と値の違いが分からない痛い子は以後放置よろ。
865 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:11:16 ] #include <stdio.h> int main() { char a = '\0'; printf("%s", a == 0 ? "'\\0' == 0" : ""); return 0; }
866 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:12:24 ] \0 は値じゃないと何度言えば分かるのか。
867 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:13:29 ] 規格票をまともに読めないキチガイを相手にしても無駄だな。
868 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:13:55 ] c文字c文字うっせーよボケ。俺は値じゃなくて\0も文字だっつってんだよw 文字と値の違いも分からない弱い頭ってやーね、こいつぜってー最後は犯罪者になってんな 理解力がないのが自分だと気づいていない、判断力を失った麻薬中毒者のごとく
869 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:14:54 ] まだやってたのか?
870 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:16:49 ] 引き際を失ったんだろうな・・・可哀想に。
871 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:17:06 ] んでよぉ、本質はそんなことじゃないんだよ。null文字が入った場所にも ちゃんとそのnull文字の文字コードが入ったデータを示すアドレスが入っているんであって >>580 がいう値0なのにアドレスなしってのが間違いって話なんだが? 何ここまで複雑に話をこじらせちゃってんだろうねw これだから理解力のないやつは、何か相手の知ってなさそうなことを持ち出して 揺さぶろうとするんだけど、自分の理解力のなさが露呈されて墓穴を掘るんだよねw
872 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:18:05 ] いつの間にかnull文字のnullが小文字になっててワロタw
873 名前:本日の自作自演擁護厨 mailto:sage [2007/05/15(火) 07:18:34 ] 844 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 06:50:52 文字は値だな。 846 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 06:54:17 規格表を見る限り、\0 \a \n \t は「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 「c文字」であって「文字」ではない。 ちゃんと自分で文字と言っているのに文字じゃないとか言い出す大ボケかますしw
874 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:18:56 ] >>580 の話はもうとっくに終わってるんだが・・・。
875 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:19:47 ] C の規格では「文字」はビット列、すなわち数値であると規定されています。 >3.7.1 文字、1バイト文字 ><プログラミング言語Cでの意味> 1バイトに納まるビット表現
876 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:19:52 ] 580が\0と書いたのが気にくわないんじゃないの。 ちゃんと'\0'と書け、と。 (でも、そうすると、854,855の対応が気になるわけだけど)
877 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:19:58 ] まだやってたのか そんな暇あるならバイトでもしろよ
878 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:20:46 ] テレビ見ながらついでで相手してるだけだからどうでもいい。
879 名前:デフォルトの名無しさん [2007/05/15(火) 07:22:22 ] >>843 って結局 JIS 規格の話だろ?逆斜線ってのは、大学の授業で聞いたことあるけど 日本じゃもともと存在していなかったんで、¥(円マーク)をバックスラッシュの代用で 使ったって話で、それについて制御文字の表現を \ を前に用いる規格があるって話で >>843 は文字が値とかって話じゃなくて、制御文字を日本では \ との組み合わせで 使われているって話でしょ?何勘違いして直接関係ない文献を勘違いしたという 意味の分からん説明をしているのか、理解不能だわ。 > 例 1. 普通、ナル文字を表すために表現 '\0' を使う。 これについてはあくまでも表現の仕方であって、値として使っているって話じゃないよ。 JIS規格におけるバックスラッシュの代用が \ って話だろw
880 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:25:56 ] よくこんな釣りを思いつくよなあ。尊敬するぜ。
881 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:28:11 ] \ がバックスラッシュで表示される環境で見てるものとして脳内変換しろよ。
882 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:28:38 ] (´ω`)
883 名前:デフォルトの名無しさん [2007/05/15(火) 07:31:13 ] ttp://okuyama.mt.tama.hosei.ac.jp/unix/C/slide19-1.html でも書かれているけど、明らかに '\0' をナル文字といって値とは言っていない 敢えて値というならそれは 0。\0 でなくて敢えて '\0' というならなおさらそれ自身は値じゃなくて なる文字。文字がなんなのか、どのように制御されているのか分からない馬鹿って困るな。 大学レベルじゃまずついていけない頭の持ち主か。何JIS規格のバックスラッシュの 代用について話をしてんねん、ボケが
884 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:31:46 ] ちょっと哀れに思えてきたねw
885 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:32:16 ] それは、5.2.1参考 「この規格で規定する基本文字集合の中の二つの要素 \と〜は、JIS X 0201では、それぞれ¥(円記号)と  ̄(オーバーライン)に置き換える」 で既出なんだな
886 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:32:24 ] バックスラッシュの代用の話なんて規格票に何も書かれていないんだが。 規格票読んでないのバレバレ。
887 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:34:02 ] とうとうISO646にまでケチをつけるまで来たのか?
888 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:34:08 ] >>886 は >>843 のレスの部分に、ということね。
889 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:35:54 ] >883 文字定数が('A'とか'B'とか'\0'とか)が値を持たないといいたいわけ?
890 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:37:17 ] 「値」という言葉の定義すら怪しいな。 数値以外は値じゃねー、と考えてそうだ。
891 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:39:25 ] #include <stdio.h> #define TEST '\0' int main() { printf("%d", TEST); return 0; }
892 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:39:59 ] もうここまで来ると理屈抜きで全面的に賛同して輪廻から解放してあげたいのだが こだわっているポイントがイマイチ分からない
893 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:41:29 ] 暇な時に適当に遊んであげれば良いと思うよ。
894 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:42:08 ] void main() gets() NULL \0 他になんかあったっけ?
895 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:42:24 ] >>894 fflush(stdin);
896 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:42:29 ] でもそういうスレじゃないしな多分
897 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:42:59 ] こいつの脳内計算機では「値」ってのと文字とが区別されてるんだよ、きっと。 メモリにタグビットかなんかがついてて。
898 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:44:51 ] ttp://okuyama.mt.tama.hosei.ac.jp/unix/C/slide19-1.html > 次は,エスケープ文字です。 > \a ビープ音(警報) 略 > # [例1]'\0':ナル文字 > # [例2]'\x00':ナル文字 エスケープ”文字”です。おまけにシングルクォートつきで '\0' ナル”文字” どこにも値なんて書かれていましぇ〜〜〜ん。'\0'と敢えて表記するなら なおさらナル”文字”であって値じゃありましぇ〜〜〜ん。そして 僕は死にましぇ〜〜ん、C言語あるから!
899 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:44:58 ] >894 malloc&freeを忘れてもらっては困るな
900 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:45:19 ] こういう奴は議論してる最中は絶対に認めないけど、 数日経つと「そんなの当たり前じゃないか」とか言い始めるタイプ。
901 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:46:20 ] >>898 >>875
902 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:46:26 ] >>897 お前の低レベルな頭じゃ文字と値の違いがなくて、数字の0として扱われている0も 値の0なんだろうねwwww 文字と値の違いが分かってないから、数字が入ったとき 数値との区別がついてねーようだな。お前、文字と数字の入り混じったデータを 扱ったこともない素人だろw
903 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:46:56 ] おまえら夜通しやってたのか?
904 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:47:26 ] このスレはかまってくれる人が多いね。 宿題スレじゃもう誰も相手しなくなったのに。
905 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:47:45 ] 面白いオモチャだからいじってみた。
906 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:48:30 ] >>901 いや、モロニ表現って書いてあるやん。ところでさぁ、話をそらすなよ。 きゃつは敢えてシングルクォートをつけて '\0' を値といったんだぞ?w JIS規格じゃもろにそれをなる文字の表現とされているんだが?w お前の場合、Aも値とか言いそうで怖いわ。Aは16進数では確かに値として 扱われることもあるが、文字と値をごっちゃにしてたら、Fまで値になって E以降が文字になってそうだなw
907 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:51:55 ] 〃∩ ∧_∧ ⊂⌒( ・ω・) はいはいそのとおりそのとおり `ヽ_っ⌒/⌒c ⌒ ⌒
908 名前:JIS規格の逆斜線の話を持ち出した大ボケの最初の定義 mailto:sage [2007/05/15(火) 07:53:22 ] 747 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 03:30:52 なんか変な方向に行ってるみたいだな。 1. ヌル文字の値が '\0' なのは規格で決まってる。 2. \0 という特別なエスケープシーケンスは規格で用意されておらず、 これは 8 進数の値を直接埋め込むエスケープシーケンスでしかないので、 '\0' の値はどの環境でも厳密に 0 になる。 (そもそもそんな特別なエスケープシーケンスを用意してしまったら、 8 進数で 0 を埋め込むことが不可能になってしまう) これでいいだろ、もう。 1. ヌル文字の値が '\0' なのは規格で決まってる。 ^^^^^^^^^^^^^^^ 表現はJIS規格でそうだが、値とは書かれていない。強いて値というならそれは0。 割り当てられている文字コードが0。あくまでも\にも0も文字、組み合わせてもそれらは 文字列という解釈はされど、C言語ではそれをエスケープシーケンスで使われる 表示できない文字を代用した文字コードが使われているって話であって それらは値ではない。んじゃ、アラートとして使われるアラートの値は'\a'って言うかね? こいつは \ の後ろに 0 があったんで、その数字に目がいってしまい、値と言ってしまったんだろうけど それは0という文字であって値ではないんだよ。んじゃ、\a が値になるんかね? これはどう見ても文字列であって、その組み合わせを代用して表示できない文字をあるように 使っているのさ。それが理解できないから大学未満レベルって言われるんだよw
909 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:53:26 ] #include <stdio.h> char itoc(int i) { if (i >= 0 && i <= 9) return '0' + i; else return '\0'; } int ctoi(char c) { if (c >= '0' && c<= '9') return c - '0'; else return -1; } int main() { int i = 9; char c = '8'; printf("i(char):%c c(int):%d", itoc(i), ctoi(c)); return 0; }
910 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:54:10 ] 「文字として存在するか、数値として存在するか」なら計算機の中ではどちらも数値として存在していて、 「文字として扱うか、数値として扱うか」ならプログラム上での扱いによる
911 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:59:12 ] コンピュータ的には状態として存在しているような気もするが。
912 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 07:59:29 ] \a ビープ音(警報) \b バック・スペース(後退) \f フィード(書式送り) \n 改行 \r キャリッジ・リターン(復帰) \t 水平タブ \v 垂直タブ \' シングル・クォーテーション ' \" ダブル・クォーテーション " \? ? \\ バックスラッシュ \ さぁ、これらもそれぞれ 改行の値は '\n'、水平タブの値は '\t'って言うかね? 表示できない、エスケープ文字って俺は言うね。そう、それらには表示できる文字が 存在しないから、便宜上代用されているんであって、別にその\との組み合わせが値 って言うものにはなっていないんだよ。強いて値って言うなら、割り当てられている文字コードに 対してなら理解は出来るが。実際のところ、整数型の値として文字コードが格納されているしな。 文字そのものは数値としては存在しておらず、文字コード表から該当する、登録されている文字を 表示させる仕組みがあるんであって、実態は数値なのさ。だから敢えて文字コードを参照する ソースを書いてやったのに、理解していないなんて・・・だめだな。 お前じゃ汎用電子計算機の仕組みについて学ぶのは無理だ。その仕組みの原理にのっとって プログラムだって作られているんだが・・・
913 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:00:24 ] 感じとしてはわかったけど、その「値」はCの規格票で 定義された用語ではないな。
914 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:03:52 ] もちっと 制御 文字について理解しましょーね、大学未満さんw さて、今日は休みだがお前らには付き合ってられん。悔しかったら どこでも良いとは言わないが、施設の整った大学にくらい通って勉強してみろ。 実際にその原理について習う実験や研究をした人間とじゃ格が違うぜ。 もちっと電子計算機の基本原理を理解してから出直せ。 文字データそのものは数値としては存在しないよ。文字だって人間が使っている文字みたく 見えるように視覚的にコンピュータが実装している範囲内の表現能力を用いて構成されてんだから。
915 名前:ここでフレーム投下 mailto:sage [2007/05/15(火) 08:04:14 ] printf("??[foo]??");としたら、期待通りの出力になりませんでした。 期待通りに出力させるにはどうしたらいいでしょう。
916 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:11:06 ] >>912 別にお前のポリシーなんて誰も聞いてないよ
917 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:11:55 ] #include <stdio.h> int main() { char str[] = "abcdefghijk"; for (unsigned int i = 0; str[i] != '\0'; ++i) printf("%p:%x ", str+i, str[i]); return 0; }
918 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:13:58 ] ( ´ω`)
919 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:15:36 ] (´ω`)
920 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:16:42 ] どっかのブログでも書かれてたが、ほんと質問者置いてけぼりで言い争いが続くなw
921 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:17:31 ] こっち見んな
922 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:18:16 ] \0の0が数値に見えちゃったんだろうね。これはその他の\aや\tのごとく 数値ではなく数”字”だから。\の後ろに数値を参照していると思ったんだろうね、可愛そうに。 どう考えてもそれも含めて\と組み合わされた文字列をエスケープ文字として代用しているだけです ありがとうございますた。
923 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:19:10 ] >>920 fj的フレームですらないのが困り物だな。manだの規格書だの読めば済むことをグダグダと・・・
924 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:23:32 ] #include <stdio.h> int main() { int chs[] = {'\a', '\b', '\f', '\n', '\r', '\t', '\v', '\'', '\"', '\?', '\\', '\0' }; for (unsigned int i = 0; chs[i] != '\0'; ++i) printf("%x ", chs[i]); putchar('\n'); int j = 0; while (chs[j] != '\'') ++j; while (chs[j] != '\0') printf("%c ", chs[j++]); return 0; }
925 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:26:52 ] あほが一人だと哀れなだけだが、 あほが二人だと始末に負えないな
926 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:27:58 ] あほが三人集まったらどうなるんだろ
927 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:27:57 ] >>568 が始まりか… こんなに長文を書きながら密度がスカスカの議論を延々と…
928 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:36:24 ] 延々と「俺的『値』の定義」を読まされるスレはここですか?
929 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:36:57 ] >>923 void に向かって``半角''の一言をだして, 引き際失った奴を思い出したよ... # fj だけじゃないけどな, void + ``半角''
930 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:40:29 ] まぁエスケープシーケンスの話はもう良いや。はいはい、'\0'はナル文字の値ってことで良いよ。 俺も今後'\0'はナル文字じゃなくてなる文字の値って言ってあげるから。 それよりもさぁ、最近、里田まいが気になるんよ。俺、別に今までハロプロだのモー娘。だの まったく興味がなったんだけどさ、クイズヘキサゴン2に出ている里田まいを見て なんかこう、キュンッときたんよ。辻と違ってまだ処女だったらええのになぁ〜なんて 期待しつつ、プログラミングをしているわけだ。そんな俺ってどうよ?C言語ならぬ Cまでいけそうかな?
931 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 08:40:53 ] もまいら思い出してくれ。 文字と数値がメモリ上でも区別されてると思い込んでる人種がいるだろ。 COBOうあなにをするタテイスカンナニラセ@「
932 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 09:14:23 ] (´ω`)
933 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 09:25:34 ] こいつらが何か意味のある議論をしている・したがっていると勘違いするから混乱するんだよ。 レスを付けて何か返ってくるというリアルワールドでのコミュニケーションの代償行為をほぼ唯一の生きがいとしているだけなのに。
934 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 09:30:03 ] 俺の周囲の場合リアルワールドの会話はこれより遥かにつまらんから困る 人の噂話、悪口、武勇伝等の自慢話ばっかりでうんざり 2chが悪口ばっかりとか生産性の無いネタばっかりって言える人は幸せ者
935 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 09:31:40 ] これは釣りに対して全力で釣られてみる遊び。 素人にはオススメできない。
936 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 09:32:56 ] おまいらじゃせいぜい2ちょんねるだな。日本語で
937 名前:デフォルトの名無しさん [2007/05/15(火) 11:54:24 ] だめだこいつら…はやくなんとかしないと
938 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 12:01:11 ] >>1 乙
939 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:04:21 ] 昨日今日あたりで一気にスレを消費しちまったな
940 名前:デフォルトの名無しさん [2007/05/15(火) 13:20:05 ] 開発環境はvc++2005 OSはxpです。現在研修でコマンドラインから 取得した引数で四則演算を行うプログラムを作成しているのですが、 オーバーフローのチェックで悩んでいます。 加算、減算については出来たのですが、乗算のオーバーフローチェックが 分かりません。limits.hをインクルードして2147483647〜-2147483648 までの数値を扱っています。どのようなコードを書けばよいのでしょうか? よろしくお願いします。 扱っている変数は int lop; // 左のオペランドに入力する値 int rop; // 右のオペランドに入力する値 int result; // 計算結果 int mod; // 除算の余り int max = INT_MAX; // 表現可能な最大値 int min = INT_MIN; // 表現可能な最小値 char *check; // 変換不可能な文字を格納 char op; // 入力する演算子 これらになります。ファイル名lop op ropの形式で 実行します。
941 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:29:02 ] long long 使っていいならラクチンなんだがなあ。
942 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:32:03 ] >>940 lop*rop (lop>0 rop>0)について調べる場合 lop>INT_MAX/rop のときオーバーフロー 負数とか考えると面倒だね
943 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:40:23 ] インラインアセンブラ使いてーなー。
944 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:42:04 ] 掛け算のオーバーフローは難しそうだな。 n周まわって 結果が正のまま とかありえそうだし
945 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:48:36 ] >>940 マルチ乙。 加減算も自分でやったんじゃないんだろ?w Hackmem とかhacker's delight で調べてみ。 日本語訳も出版されている。
946 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:51:21 ] 掛け算だけにマルチ いやスミマセン
947 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:53:30 ] 掛け算を足し算のループに変えてオーバーフローを検出くらいしか思い浮かばん… 負数は先読み計算で。
948 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 13:59:21 ] MSBのbit位置テーブル作っといてlookupすりゃええんちゃうの?
949 名前:デフォルトの名無しさん [2007/05/15(火) 14:02:51 ] レスありがとうございます。確かにlongが使えるといいのですが、使っちゃ駄目みたいです。ちなみに先ほどのコードを使用して動かしてみました。全ては試していないのですが、 -2147483648 * -1 = -2147483648や 2147483647 * -1 = オーバーフローと なってしまいます。上はオーバーフローに下は -2147483647になるようにしたいのですが、中々上手くいきません。 どうすればよいでしょうか?よろしくお願いします。
950 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:21:43 ] 2進数のまま手計算してみれば? 途中経過のビットも出力して確認しながらやれよ。
951 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:28:25 ] これでダメな場合って lop==0 の時以外にあるかな? result=lop*rop; if(result/lop!=rop) オーバーフロー
952 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:54:12 ] >>951 っ lop=-1 rop=INT_MIN
953 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:56:41 ] >>940 加減算のオーバーフローチェックはどうやったの?
954 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:04:30 ] >>952 これやったら落ちてビビった (MacOSX 10.4.9 Intel Core 2 Duo)
955 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 15:11:19 ] >>954 >>952 で同じく落ちた (Win98SE C7 600MHz) なんと言うか恐ろしい計算だw