C言語なら俺に聞け( ..
[2ch|▼Menu]
773:デフォルトの名無しさん
07/05/15 03:59:46
C++ の規格票(しかも 1998 年のドラフト)ですまんが、

null character (respectively, null wide character), whose representation has all zero bits.
ヌル文字(あるいはヌルワイド文字)、これは全てのビットが 0 の表現をとる。

>>771
\0 は文字だが '\0' は値だぞ。

774:デフォルトの名無しさん
07/05/15 04:00:23
ということで



  NULL文字をNULLポインタと思いこんで延々暴れたバカがいた



ということでよいかな。まあ紛らわしいからその分は差し引いてあげるけどさ。

775:デフォルトの名無しさん
07/05/15 04:01:15
>>774
よい

776:デフォルトの名無しさん
07/05/15 04:02:17
URLリンク(ratan.dyndns.info)
\がついたものはここでも説明されているように「文字」であって値には該当せず。
いわゆる制御文字ゆえに表示される文字とは別扱いだが
それらにも「文字コード」が割り振られている。その文字コードを
char型のデータに入れることで扱っているのだが、そこまで理解できないかなぁ
理解力のないお○カちん達ってw
だからNULL文字に対応するコードが0であって、\0は値じゃなくてNULL文字と言うべき。

777:デフォルトの名無しさん
07/05/15 04:03:07
>>772
もうその程度のことでしか反論できないでしょ?おまえどこの学校出身だ?
まぁ、ランクE未満の大学でもなく大学未満なんでしょうね。
派遣のお仕事がんばってねぇ〜〜 ♣

778:デフォルトの名無しさん
07/05/15 04:03:25
>>747 で \0 と '\0' を使い分けてるのが理解できないんだろうか。

779:デフォルトの名無しさん
07/05/15 04:04:19
「NULL文字」なんて腐った表記をする奴にロクな奴はいない。
null文字と書け。

780:デフォルトの名無しさん
07/05/15 04:05:45
>>765
>>580
> ¥0  =値0 、アドレス無し
参照。ちなみに\0(NULL文字、空文字)に割り当てられているコードは0だが
\0自身は値ではなく「文字」ですから。

781:デフォルトの名無しさん
07/05/15 04:06:48
\0が値だなんて誰か言ってたっけ

782:デフォルトの名無しさん
07/05/15 04:08:18
まあ、'\0' も値が 0 になる整定数式だから
ヌルポインタとして扱おうと思えば扱えるけどね。
紛らわしいから絶対やっちゃいけないが。

783:デフォルトの名無しさん
07/05/15 04:09:01
>>580 がクソなのは既に誰もが認めている終わった話題だ。

784:デフォルトの名無しさん
07/05/15 04:09:57
580・・・
誰かがこんなのを擁護してるとでも思ったのかな

785:デフォルトの名無しさん
07/05/15 04:10:38
必死に無意味な説明をしようとした奴がボロ出しまくりでワロスwwww
なんだよ、\0が値とか言っちゃっているやつ?あたいにそんな小細工
通用しないかんねぇ〜(スケバン恐子風に)
エスケープシーケンスは文字であって値ではない、これ定説。
ライフスペースでも定説。オウムには破防法(意味不明)

786:デフォルトの名無しさん
07/05/15 04:10:53
int *p = 2 - 4 + 2;

これもヌルポインタ。

787:デフォルトの名無しさん
07/05/15 04:13:55
>>747
1. ヌル文字の値が '\0' なのは規格
        ^^^^^^^^^^^^
対応コードが0ではあるが、NULL文字は値ではなく文字ってことな・ん・だ・が?
文字って値なんだぁ。それじゃぁ、char a[10]; a[0]='a';ってaって文字を入れるとき
値にAが入っちゃうのぉ〜〜?もはや値に有らず。
a[0]='\0';で空文字を入れることはあるけど、値で入れるなら '' とかつけずに
対応している文字コードを入れたらええんでな〜〜い?

788:デフォルトの名無しさん
07/05/15 04:14:12
>>785
ヌル文字とヌルポインタは別物ってことはわかったの?

789:デフォルトの名無しさん
07/05/15 04:17:09
自分の意味不明な筋の通らない理論を押し切ろうと、もう必死で
相手の筋の通った理論を屁理屈で解釈してつつこうと必死でしょ?
そんなんだから物事の本質が霞んでしまうんだよ。
路上を見てみろ?道路交通法をまともに守っている奴がいない、破っている奴らばかり
だから自分もそうする?それじゃ自分 も 道路交通法を理解していないと
道路交通法を知っている人に対して思われているだけだと気づくんだな。
警察の前じゃ違反は違反だぜ?キップ切られるぜ?免許傷つくぜ?
俺はまだ違反点数の累積は0だ。けど、違反点数も俺の免許もNULLじゃないぜ?

790:デフォルトの名無しさん
07/05/15 04:17:50
もうぬるぽ('A`)

791:デフォルトの名無しさん
07/05/15 04:17:52
「値が'\0'」と書いてあるんであって「値が\0」とは書いてないんだよ。

792:デフォルトの名無しさん
07/05/15 04:18:27
>>788
あたりまえじゃん、っつーかそれをず〜〜〜っと昨日の>>580に対して言い続けてきたんだが?w
俺が理解していないと思ってんの?何回文字列の終端を示すNULL文字自身が入ったデータの
アドレスが存在していて、文字列の後ろの終端を示す部分がNULLポインタになっていないと説明したら
わかるんだと?鬱陶しいなぁ・・・

793:デフォルトの名無しさん
07/05/15 04:18:48
なるほど。そこにつっこんでたのか。
「ヌル文字の値」は「ヌル文字の文字コード」の意味だが、
確かに紛らわしい表現ではあったな。

でも、それを言うなら、
>char a[10]; a[0]='a';ってaって文字を入れるとき
                ~~~~~~~~~~~~~~~~~~~~~~
>a[0]='\0';で空文字を入れることはあるけど、
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
もおかしいな。
「aの文字コードを入れるとき」、
「空文字の文字コードを入れることはあるけど」だな。

794:デフォルトの名無しさん
07/05/15 04:19:43
>>791
だから \0 は値じゃなくて 文字 だっつってんだろ・・・説明だって出てんだろ。
その文字、NULL文字に該当する対応コードが 0 だっつってんの。
対応コードは \0 か? \0 って何進法?w

795:デフォルトの名無しさん
07/05/15 04:20:24
>>792

763 名前:デフォルトの名無しさん [sage] :2007/05/15(火) 03:49:15
>>752
> >>747は全くNULLポインタについて言及してないよ。
いや、モロ最初の項目で
> 1. ヌル文字の値が '\0' なのは規格で決まってる。
言及してんじゃん。

796:デフォルトの名無しさん
07/05/15 04:21:28
>>794
\0 は文字だけど '\0' は文字リテラルで値だろ!!!
何度言ったら分かるんだ!!!

797:デフォルトの名無しさん
07/05/15 04:22:38
>>793
お前が >>736 の出力結果を理解していないことがわかった。もう黙ってろ。
文字型の変数に文字でなくても直接文字コードを入れても使えることが理解できてないんだな。
通りで話がわからないわけだw
なんか、俺がNULLポインタとデータの違いがわかってないみたいないわれ方しているが
さっきっから俺に対して曲解した考えで論破しようと必死こいている奴の方が
曲解しているだけあって理解していないのがバレてんだが・・・なんだよ \0 が値って?
あたいにはそんなの通用しないかんね!

798:デフォルトの名無しさん
07/05/15 04:23:04
\0は値じゃない。
'\0'は値。

799:デフォルトの名無しさん
07/05/15 04:23:39
この流れなら言える!お前ら全員ぬるぽ!(寝るぽ!)

800:デフォルトの名無しさん
07/05/15 04:23:57
何というか日本語がこれほど通じないのは、もはや釣りだとしか思えない。

801:デフォルトの名無しさん
07/05/15 04:25:44
>>797
C に「文字型」なんてありません。

802:デフォルトの名無しさん
07/05/15 04:26:02
クォーテーションで括ってるか括ってないかの違いがまだわかってないな

803:デフォルトの名無しさん
07/05/15 04:26:21
779 名前:デフォルトの名無しさん 投稿日:2007/05/15(火) 04:04:19
「NULL文字」なんて腐った表記をする奴にロクな奴はいない。
null文字と書け。
↑こういうことしかいえなくなっているら。しかもこれは自分基準w
こういうのが鬱陶しいんだよな。だから何?としか言われない
間違いではないことを気にいらねーって罵倒してくる奴。
お前何様だよ?デジタル世界の王者か?欧米か!?
てめぇ基準なんてどうでも良い。検索してどっちが多く使われているか調べてから出直せw

804:デフォルトの名無しさん
07/05/15 04:27:12
紛らわしいのにわざわざ大文字で書く理由が知りたい。

805:デフォルトの名無しさん
07/05/15 04:29:59
>>773
値って言うならちゃんと演算子使って演算できんだろうな?
その\0(空文字)をどうやって演算すんだ?
文字データとしては表示すらされないってのにw
文字同士の計算でもあるの?Aを文字と扱うか16進数として値を10として扱うかでは大違いだろ
それすら理解していないなんて、どこの大学出身だ?あっ、大学未満か

806:デフォルトの名無しさん
07/05/15 04:30:55
\0は値じゃないって言ってるでしょ

807:デフォルトの名無しさん
07/05/15 04:32:40
本気で言ってるのか???

str[i] != '\0' は演算だろ?

そして printf("%d\n", '\0' + 3); がエラーにでもなると思ってるのか?

808:デフォルトの名無しさん
07/05/15 04:33:36
なんで'\0'を勝手に\0に置き換えるかな。

809:デフォルトの名無しさん
07/05/15 04:35:06
どう見ても釣りです。
本当にありがとうございました。

810:デフォルトの名無しさん
07/05/15 04:37:07
結論出しておくわ。これは捻じ曲げようとしても無理。
\n \a \t \b \0 それらは文字であって値ではない。とりわけ制御文字といわれるものであって
値のように演算は不可能。
URLリンク(ratan.dyndns.info)
でも説明されているように、文字(制御文字)であってそれらにも文字コードが割り振られていて
その文字コードなら割り振られているという事実を踏まえて、その文字の値として扱うことは可能。
URLリンク(www.psl.ne.jp)
たとえば、AはASCIIコードでは16進数にて41(10進法では65)と指定されていて
コードに1を足すことによって66にした場合、その文字コードを参照して表示される文字は
ちゃんとBになるってのは >>736 を実行すりゃ一目瞭然。
実証、検証されているのにつまらない屁理屈を言う奴、だめぽ。

811:デフォルトの名無しさん
07/05/15 04:38:16
>>808
もうその程度でしか言い返せないんだね。どちらも値じゃないんだが?w
値は\0よって、スケバン風に言ってなさいってこったでパンナコッタ。

812:デフォルトの名無しさん
07/05/15 04:38:47
>もうその程度でしか言い返せないんだね。どちらも値じゃないんだが?w

もうオワタ\(^o^)/

813:デフォルトの名無しさん
07/05/15 04:39:40
また、Bという文字に1を足すなんておかしい。文字コードに対してならおk。
Bに1を足すなんて、環境によっては文字列の追加として B1 と解釈されかねんよ。

814:デフォルトの名無しさん
07/05/15 04:40:29
>>811
本気で分かってねえな・・・。
呆れてものも言えん。

815:デフォルトの名無しさん
07/05/15 04:42:23
だめだこいつ

816:デフォルトの名無しさん
07/05/15 04:42:28
最後まで自分の理解する頭のないことを露呈しつつ粘着乙。お前だけだよ、こんなところで
朝まで居残りしているのは。

817:デフォルトの名無しさん
07/05/15 04:45:46
全くだ

818:デフォルトの名無しさん
07/05/15 04:48:26
っと、最後までこんなスレで自分の間違いを必死こいて間違いじゃなかったことにしようと
ここでレスしている人に対して噛み付いてくるメガネデヴピッツァですた(・∀・)

819:デフォルトの名無しさん
07/05/15 04:49:14


820:デフォルトの名無しさん
07/05/15 04:49:43
もう放っとけ。

821:デフォルトの名無しさん
07/05/15 04:50:10
うん

822:デフォルトの名無しさん
07/05/15 04:50:33
\0は値じゃなくて文字だよぉ〜〜、対応コードは0で値として扱えるけどな、ケケケw

823:デフォルトの名無しさん
07/05/15 05:07:05
スレリンク(tech板:66番)
おーい、ちょうど良いや、ここでふぁびょ〜んなお前ら、これに答えてやれよw

824:デフォルトの名無しさん
07/05/15 05:13:38
>>814
'\0'でもこれは制御文字であって値にあらず。何が言いたいかはっきりしろよ?
このスレってやっぱ分かってねーとかそことなく揺さぶるけど、結局
自分の意見を言わずに逃げるチキンが多いよな。この前もそう。
お前分かってないなみたいなことを言ったが、答えは fgets の中の文字数の指定に
255 と入力ミスをしたのをネチネチ陰湿にあおってきただけで、そいつ自身は
fgetsの使い方についてろくに答えず。入力ミスしたやつは間違いにしろ
参考にできるページを参照してたが、このスレのタイトルを理解しておらず
答える気がないくせに相手にだけくだらねぇ間違いを指摘する程度でここにいるなら
出て行った方がよくね?何、自分にとってイラつくものを見て気分を害したんだよ!みたいな
不満をわざわざいい掛かってくるのか、さっぱりわからねぇ。こんなところにいるくらいなら
車軸の壊れそうなジェットコースターにでも乗ったら?

825:デフォルトの名無しさん
07/05/15 05:26:00
char a; に対して
a=0; a='\0'; はおkだが、前者は0という値、後者は明らかに文字データゆえに
\0は文字ではあるが値じゃないんだが、それすら理解していないのはどっちだぁ〜〜い?
NULLはWikiにも記録されているが、ゼロと区別するためのドイツ語で0を意味するnullを用いて
何もないを意味するが、null文字は表示される文字も何もない文字として扱われていて
割り当てられている文字コードは0だが文字そのものはアルファベットも数”字”も含めて
文字であって”値”ではない。\0 およびその他制御文字は表示されないけど文字であって
値ではない。あたいも値ではない。

826:デフォルトの名無しさん
07/05/15 05:27:21
ようやく分かった。お前が何が分かってないかが。

char 型というのは CHAR_MIN〜CHAR_MAX の値を入れることの出来る整数型であって、
C には「文字型」なんて型はないんだよ。

827:デフォルトの名無しさん
07/05/15 05:28:20
値だっていうなら a=\0; をやればいいさ。コンパイルエラー起こすけどな、ケケケ
誰かさん、敢えて\0と'\0'のシングルクォートを強調したが、それをつけてんなら
なおさら値じゃなくて文字データだよなぁ。まさか、値にわざわざ''をつけて代入してんのかーい?

828:デフォルトの名無しさん
07/05/15 05:30:20
入れることの出来る、じゃないな。
表現することの出来る、だ。

829:デフォルトの名無しさん
07/05/15 05:31:05
わかんねーなら調べろだの、調べてないだのを指摘するくらいなら
調べられる参考文献を参照しろってーの。ろくにそういうのも出さずに
ただ自分が思った(間違った)理論を提唱されても、お前が決めた仕様でも規格でも
ルールでもないだろって話で流されるよ。本来の基本概要を理解している、知っている人には
うそは通用しない。\0は制御文字であって値じゃない。あたいでもそんなことは分かっている。
勝手にありもしないことを定義しないでくれ。\0を文字コードで参照するなら0なら分かるし
文字データとして入れるのに '\0' で指定するなら分かるが、値じゃない。文字だ。
いつまでもモジモジしてんじゃねーぞ。

830:デフォルトの名無しさん
07/05/15 05:35:41
C の規格票読め。
読むだけならタダだ。

831:デフォルトの名無しさん
07/05/15 05:38:34
くどいようだが、すでに俺は証明、提示をした。制御文字は値ではなく
文字データ。文字コードによって割り当てられている文字データ。
その文字コードがあっても、コードに対応した文字データがなければ
文字コードを使ってもナンセンス。\0は便宜上使われている文字であって
これは値ではない。そして本来は表示されない制御文字も、便宜上
使えるようにと割り当てられている代用の文字があるだけであって
\a \n \t そのものは値ではなく制御 文 字 であーる。
そんなの当たり前なのに、なーーにが値だ、あたいにはそんな屁理屈、通用しないかんね。

832:デフォルトの名無しさん
07/05/15 05:40:08
\0 はエスケープシーケンスで''か""の中に出てこないと意味がない。

833:デフォルトの名無しさん
07/05/15 05:43:31
\0は代用で用いられている文字であって値ではない。値じゃない。
値に対しても定義が曖昧だが、みたまんま、\0 \a \t \n は制御文字として
代用で使われているものであり、数値ではない。数字だって場合によっては
数値ではなく数字(数の文字)として扱われるが、その数の文字に対してだって
文字コードが割り当てられているけど、数字のまんまの数値で文字コードは割り当てられて
いないのは、ASCIIコードの対応表を出漁するプログラムで一目瞭然。
そう、単に文字コードが割り当てられているんであって、文字そのものは
値じゃ〜〜ないんだよ。制御文字として代用されたものだけ特別扱いで値になっちゃうの?
それじゃ、アルファベットや数字も値?値じゃ〜ねぇなぁ、文字データは演算できんよ。
割り当てられた文字コードを数値として演算することは出来るけどな。
たとえばAに割り当てられている文字コード1を足してBにすることが出来るというのは
説明済み。だけど、Bに1を足すのは不可能。文字の結合として B1 としちゃう
環境や言語は存在するから、要注意。文字は文字データであって値にあらず、これ当たり前。

834:デフォルトの名無しさん
07/05/15 05:44:23
#include <stdio.h>
int main() {
int a = 1;
a = '\0';
printf("%d", a);

return 0;
}

835:デフォルトの名無しさん
07/05/15 05:44:57
長文になったが、制御文字の代用の \0 は値じゃなくて文字。モジモジ君だって
それくらい知ってるよ?割り当てられている文字コードと文字データをごっちゃにしないよう
今後は注意しましょうね♪ さっ、これにこりたらこんなところにいないで
とっととジェットコースターにでも乗って来い。頭がスカッとすっぜ?

836:デフォルトの名無しさん
07/05/15 05:54:03
というかCでいう文字とは整数の一種でつまりは値なんだが。
と今更こんなことを言ってみるが、みんな寝ちゃったかなw

837:デフォルトの名無しさん
07/05/15 05:56:04
文字定数

838:デフォルトの名無しさん
07/05/15 06:02:23
眠いから寝る

839:デフォルトの名無しさん
07/05/15 06:11:24
朝までやってたのか!

840:デフォルトの名無しさん
07/05/15 06:20:18
 ___  見えませ〜ん
‖    |     ∨
‖現実 ∧_∧   .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U


 ___  読めませ〜ん
‖    |     ∨
‖空気 ∧_∧   .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U


 ___  知りませ〜ん
‖    |     ∨
‖常識 ∧_∧   .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U


 ___  ありませ〜ん
‖    |     ∨
‖未来 ∧_∧   .ヘ∧
‖ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )   (  と)
凵    し`J   U U

841:デフォルトの名無しさん
07/05/15 06:20:28
何やってんだお前ら?

842:デフォルトの名無しさん
07/05/15 06:24:22
子供同士でサンタは居るか居ないかで喧嘩してたようです。

843:デフォルトの名無しさん
07/05/15 06:41:30
C 規格票より
URLリンク(www.jisc.go.jp)
JIS X3010 を検索

3.7.1 文字、1バイト文字
<プログラミング言語Cでの意味> 1バイトに納まるビット表現

5.2.1 文字集合
(略)
すべてのビットが 0 であるバイトをナル文字という。
(略)

6.4.4.4 文字定数
構文規則
 文字定数:
  'c文字列'
  L'c文字列'
 (略)

単純文字定数は、型 int をもつ。
1 バイトの実行文字に対応する単一の文字を含む単純文字定数の値は、
対応付けた文字の表現を整数として解釈した数値とする。
2 文字以上を含む(例えば 'ab')又は 1 バイトの実行文字で表現できない文字
若しくは逆斜線表記を含む単純文字定数の値は、処理系定義とする。
単純文字定数が単一の文字又は逆斜線表記を含む場合、
その値はその単一の文字又は逆斜線表記の値を持つ char 型のオブジェクトを
int 型に変換したときの結果とする。
(略)
例 1. 普通、ナル文字を表すために表現 '\0' を使う。
(略)

844:デフォルトの名無しさん
07/05/15 06:50:52
文字は値だな。

845:デフォルトの名無しさん
07/05/15 06:52:31
だめだこいつ、制御文字は表示できる文字データじゃないから
便宜上代用されている\0 \a \n \tがあってもそれを値だと思っているよw
文字と値の違いが分からないからって、プログラムが出来ないわけじゃないから
安心しろ。だけどお前の頭じゃ限界が見えているから、言語の使用とか
電子計算機の仕組みにかかわらず大学で受ける授業にはついていけないだろうから
低学歴のまま人生を諦めろ。まぁ、学歴が高くなくても成功する人も稀にいるから
努力は怠らないこったね。つまらないことに労を費やしているうちに、老いていくし
元気もなくなるから、早いところ人生の積み重ねを始めておけ。
間違っても間違いを押し切ることはするな。\0 が値に見えるなら目じゃなくて頭が
どうかしているよ。

846:デフォルトの名無しさん
07/05/15 06:54:17
規格表を見る限り、\0 \a \n \t は「c文字」であって「文字」ではない。

847:デフォルトの名無しさん
07/05/15 06:54:40
>>844
ダウト。文字データそのものは電子計算機はもってないんだよ。
人間が文字として認識する形を示すものを、文字コードで対応させて
参照しているのが分からないみたいだね。所詮、大学未満の考える
つまらない浅はかな考えだな。大学で普通に習うから、まだ受験するチャンスがあるなら
がんばって大学に行きな。基本的には入学に年齢制限はないから。60過ぎても入学する人もいるし。

848:デフォルトの名無しさん
07/05/15 06:55:00
×規格表
○規格票

849:デフォルトの名無しさん
07/05/15 06:55:50
>>847
脳内定義はどうでもいいから >>843 の規格票を読め。

850:デフォルトの名無しさん
07/05/15 06:56:12
>>846
制御文字の代用で使われている文字だと言っているんだが?
どう見ても値じゃなくて円マーク+文字の組み合わせの文字だろ。
いい加減馬鹿は市ねよ。うぜぇよ。値に対する概念もない馬鹿が

851:デフォルトの名無しさん
07/05/15 06:57:48
>>850
規格票の 6.4.4.4 文字定数を 100 回読んでこい。
「逆斜線表記」は「c文字」だ。

852:デフォルトの名無しさん
07/05/15 06:59:01
>>849
いや、脳内じゃなくて書かれているまんま述べただけだが?
お前こそ理解しろよwwww
> 例 1. 普通、ナル文字を表すために表現 '\0' を使う。
はい、自分で爆弾抱えたまま爆発させて自爆しちゃいましたね。
決定的な証拠。表現を使うであって値とは掛かれていません。
ちなみに、null文字のコードが0に割り当てられているのは事実だが
これは人間が決めたことであってもともと電子計算機がそれをそうだという
仕組みを持っていたわけじゃないんだよ。文字そのものが数値じゃないんだから。
いい加減、文字が人間が作ったものだと気づいてね。計算機がやっているのは
あくまでも0と1の組み合わせの演算。そのデータから文字データを参照して
表示する際に文字コードを使ってんだよ。大学レベルだから、専門学校以下は黙っててね。

853:デフォルトの名無しさん
07/05/15 07:00:10
>>851
ええ、だからお前もしつこいなぁ。理解力のない馬鹿は失せろ。
俺がまず否定しているいのは \0 が値ということ。値じゃなくて
どこをどう見ても文字。お前はそれを敢えて c文字だと言ってるしw
値じゃなくて文字、それについては俺がすでに述べてるんだが?
ボケは市ねよ、低学歴w

854:デフォルトの名無しさん
07/05/15 07:00:50
\0 は c文字。
'\0' は文字定数で値。

855:デフォルトの名無しさん
07/05/15 07:01:53
>>854
残念ながら制御文字であって \0 は便宜上表示できない制御文字の代用で
使っている文字だ。値ではない。値について理解していない馬鹿は失せろwwww

856:デフォルトの名無しさん
07/05/15 07:02:30
>>855
規格票の 6.4.4.4 文字定数を 100 回読んでこい。
あ、構文規則の読み方も分からない低学歴なのか?

857:デフォルトの名無しさん
07/05/15 07:05:26
こういう話題であげあしの取り合いになるのは宿命なのか

858:デフォルトの名無しさん
07/05/15 07:05:59
> 例 1. 普通、ナル文字を表すために表現 '\0' を使う。
くどいようだが自分で墓穴を掘ってそのままあの世へ行け。
二度と人間界に戻ってくるな。これが読めないなら日本語を勉強してから出直せ。
そこにある \0 は紛れもなく
\ と 0 を並べたそれぞれが文字であり、組み合わせて値としたものではない。
これ以上理解できない曲解しかしないやつは放置するね。
値じゃないのは事実。文字コードは便宜上人間が割り当てたもので
Aそのものが値を持つとかないから。AはA。人間が作った文字コード表に
電子計算機が持つ基本の数値を割り当てただけだから。

859:デフォルトの名無しさん
07/05/15 07:06:37
とうとう規格票に文句付け出したよwwwwwwwwwwwwwwwwwwwwwwww

860:デフォルトの名無しさん
07/05/15 07:07:19
盛り上がっていいじゃない

861:デフォルトの名無しさん
07/05/15 07:07:32
>すべてのビットが 0 であるバイトをナル文字という。
これが見えないのか?

862:デフォルトの名無しさん
07/05/15 07:07:39
char a=0; の a を %c で表示すると、というか表示はされないが空文字が参照される。
a='\0'; とした場合、明らかに文字データを使っているんであって
a=0; のような値は使われていない。ちゃんと文字データと値の違いを理解しましょーね
大学未満w

863:デフォルトの名無しさん
07/05/15 07:10:03
>単純文字定数は、型 int をもつ。
>1 バイトの実行文字に対応する単一の文字を含む単純文字定数の値は、
>対応付けた文字の表現を整数として解釈した数値とする。
これも読めないのかな。

864:デフォルトの名無しさん
07/05/15 07:10:53
誰かさんは制御文字の代用で使われている \ と 0 という2つの文字をくっつけると
値になっちゃうらしいよ?w どこをどう見ても \ も 0 もつなげても \0 という 文字 です
ありがとうございました。文字と値の違いが分からない痛い子は以後放置よろ。

865:デフォルトの名無しさん
07/05/15 07:11:16
#include <stdio.h>

int main() {
char a = '\0';
printf("%s", a == 0 ? "'\\0' == 0" : "");
return 0;
}

866:デフォルトの名無しさん
07/05/15 07:12:24
\0 は値じゃないと何度言えば分かるのか。

867:デフォルトの名無しさん
07/05/15 07:13:29
規格票をまともに読めないキチガイを相手にしても無駄だな。

868:デフォルトの名無しさん
07/05/15 07:13:55
c文字c文字うっせーよボケ。俺は値じゃなくて\0も文字だっつってんだよw
文字と値の違いも分からない弱い頭ってやーね、こいつぜってー最後は犯罪者になってんな
理解力がないのが自分だと気づいていない、判断力を失った麻薬中毒者のごとく

869:デフォルトの名無しさん
07/05/15 07:14:54
まだやってたのか?


870:デフォルトの名無しさん
07/05/15 07:16:49
引き際を失ったんだろうな・・・可哀想に。

871:デフォルトの名無しさん
07/05/15 07:17:06
んでよぉ、本質はそんなことじゃないんだよ。null文字が入った場所にも
ちゃんとそのnull文字の文字コードが入ったデータを示すアドレスが入っているんであって
>>580がいう値0なのにアドレスなしってのが間違いって話なんだが?
何ここまで複雑に話をこじらせちゃってんだろうねw
これだから理解力のないやつは、何か相手の知ってなさそうなことを持ち出して
揺さぶろうとするんだけど、自分の理解力のなさが露呈されて墓穴を掘るんだよねw

872:デフォルトの名無しさん
07/05/15 07:18:05
いつの間にかnull文字のnullが小文字になっててワロタw

873:本日の自作自演擁護厨
07/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:デフォルトの名無しさん
07/05/15 07:18:56
>>580 の話はもうとっくに終わってるんだが・・・。

875:デフォルトの名無しさん
07/05/15 07:19:47
C の規格では「文字」はビット列、すなわち数値であると規定されています。

>3.7.1 文字、1バイト文字
><プログラミング言語Cでの意味> 1バイトに納まるビット表現

876:デフォルトの名無しさん
07/05/15 07:19:52
580が\0と書いたのが気にくわないんじゃないの。
ちゃんと'\0'と書け、と。
(でも、そうすると、854,855の対応が気になるわけだけど)

877:デフォルトの名無しさん
07/05/15 07:19:58
まだやってたのか
そんな暇あるならバイトでもしろよ

878:デフォルトの名無しさん
07/05/15 07:20:46
テレビ見ながらついでで相手してるだけだからどうでもいい。

879:デフォルトの名無しさん
07/05/15 07:22:22
>>843って結局 JIS 規格の話だろ?逆斜線ってのは、大学の授業で聞いたことあるけど
日本じゃもともと存在していなかったんで、¥(円マーク)をバックスラッシュの代用で
使ったって話で、それについて制御文字の表現を \ を前に用いる規格があるって話で
>>843 は文字が値とかって話じゃなくて、制御文字を日本では \ との組み合わせで
使われているって話でしょ?何勘違いして直接関係ない文献を勘違いしたという
意味の分からん説明をしているのか、理解不能だわ。

> 例 1. 普通、ナル文字を表すために表現 '\0' を使う。
これについてはあくまでも表現の仕方であって、値として使っているって話じゃないよ。
JIS規格におけるバックスラッシュの代用が \ って話だろw

880:デフォルトの名無しさん
07/05/15 07:25:56
よくこんな釣りを思いつくよなあ。尊敬するぜ。

881:デフォルトの名無しさん
07/05/15 07:28:11
\ がバックスラッシュで表示される環境で見てるものとして脳内変換しろよ。

882:デフォルトの名無しさん
07/05/15 07:28:38
(´ω`)

883:デフォルトの名無しさん
07/05/15 07:31:13
URLリンク(okuyama.mt.tama.hosei.ac.jp)
でも書かれているけど、明らかに '\0' をナル文字といって値とは言っていない
敢えて値というならそれは 0。\0 でなくて敢えて '\0' というならなおさらそれ自身は値じゃなくて
なる文字。文字がなんなのか、どのように制御されているのか分からない馬鹿って困るな。
大学レベルじゃまずついていけない頭の持ち主か。何JIS規格のバックスラッシュの
代用について話をしてんねん、ボケが

884:デフォルトの名無しさん
07/05/15 07:31:46
ちょっと哀れに思えてきたねw

885:デフォルトの名無しさん
07/05/15 07:32:16
それは、5.2.1参考
「この規格で規定する基本文字集合の中の二つの要素
\と〜は、JIS X 0201では、それぞれ¥(円記号)と
 ̄(オーバーライン)に置き換える」
で既出なんだな

886:デフォルトの名無しさん
07/05/15 07:32:24
バックスラッシュの代用の話なんて規格票に何も書かれていないんだが。
規格票読んでないのバレバレ。

887:デフォルトの名無しさん
07/05/15 07:34:02
とうとうISO646にまでケチをつけるまで来たのか?

888:デフォルトの名無しさん
07/05/15 07:34:08
>>886>>843 のレスの部分に、ということね。

889:デフォルトの名無しさん
07/05/15 07:35:54
>883
文字定数が('A'とか'B'とか'\0'とか)が値を持たないといいたいわけ?

890:デフォルトの名無しさん
07/05/15 07:37:17
「値」という言葉の定義すら怪しいな。
数値以外は値じゃねー、と考えてそうだ。

891:デフォルトの名無しさん
07/05/15 07:39:25
#include <stdio.h>
#define TEST '\0'

int main() {
printf("%d", TEST);
return 0;
}

892:デフォルトの名無しさん
07/05/15 07:39:59
もうここまで来ると理屈抜きで全面的に賛同して輪廻から解放してあげたいのだが
こだわっているポイントがイマイチ分からない

893:デフォルトの名無しさん
07/05/15 07:41:29
暇な時に適当に遊んであげれば良いと思うよ。

894:デフォルトの名無しさん
07/05/15 07:42:08
void main()
gets()
NULL
\0

他になんかあったっけ?

895:デフォルトの名無しさん
07/05/15 07:42:24
>>894
fflush(stdin);

896:デフォルトの名無しさん
07/05/15 07:42:29
でもそういうスレじゃないしな多分

897:デフォルトの名無しさん
07/05/15 07:42:59
こいつの脳内計算機では「値」ってのと文字とが区別されてるんだよ、きっと。
メモリにタグビットかなんかがついてて。


898:デフォルトの名無しさん
07/05/15 07:44:51
URLリンク(okuyama.mt.tama.hosei.ac.jp)
> 次は,エスケープ文字です。
> \a ビープ音(警報)

> # [例1]'\0':ナル文字
> # [例2]'\x00':ナル文字
エスケープ”文字”です。おまけにシングルクォートつきで '\0' ナル”文字”
どこにも値なんて書かれていましぇ〜〜〜ん。'\0'と敢えて表記するなら
なおさらナル”文字”であって値じゃありましぇ〜〜〜ん。そして
僕は死にましぇ〜〜ん、C言語あるから!

899:デフォルトの名無しさん
07/05/15 07:44:58
>894
malloc&freeを忘れてもらっては困るな

900:デフォルトの名無しさん
07/05/15 07:45:19
こういう奴は議論してる最中は絶対に認めないけど、
数日経つと「そんなの当たり前じゃないか」とか言い始めるタイプ。

901:デフォルトの名無しさん
07/05/15 07:46:20
>>898
>>875

902:デフォルトの名無しさん
07/05/15 07:46:26
>>897
お前の低レベルな頭じゃ文字と値の違いがなくて、数字の0として扱われている0も
値の0なんだろうねwwww 文字と値の違いが分かってないから、数字が入ったとき
数値との区別がついてねーようだな。お前、文字と数字の入り混じったデータを
扱ったこともない素人だろw

903:デフォルトの名無しさん
07/05/15 07:46:56
おまえら夜通しやってたのか?

904:デフォルトの名無しさん
07/05/15 07:47:26
このスレはかまってくれる人が多いね。
宿題スレじゃもう誰も相手しなくなったのに。

905:デフォルトの名無しさん
07/05/15 07:47:45
面白いオモチャだからいじってみた。

906:デフォルトの名無しさん
07/05/15 07:48:30
>>901
いや、モロニ表現って書いてあるやん。ところでさぁ、話をそらすなよ。
きゃつは敢えてシングルクォートをつけて '\0' を値といったんだぞ?w
JIS規格じゃもろにそれをなる文字の表現とされているんだが?w
お前の場合、Aも値とか言いそうで怖いわ。Aは16進数では確かに値として
扱われることもあるが、文字と値をごっちゃにしてたら、Fまで値になって
E以降が文字になってそうだなw

907:デフォルトの名無しさん
07/05/15 07:51:55
   〃∩ ∧_∧
   ⊂⌒(  ・ω・)  はいはいそのとおりそのとおり
     `ヽ_っ⌒/⌒c
        ⌒ ⌒

908:JIS規格の逆斜線の話を持ち出した大ボケの最初の定義
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/15 07:54:10
「文字として存在するか、数値として存在するか」なら計算機の中ではどちらも数値として存在していて、
「文字として扱うか、数値として扱うか」ならプログラム上での扱いによる

911:デフォルトの名無しさん
07/05/15 07:59:12
コンピュータ的には状態として存在しているような気もするが。

912:デフォルトの名無しさん
07/05/15 07:59:29
\a ビープ音(警報)
\b バック・スペース(後退)
\f フィード(書式送り)
\n 改行
\r キャリッジ・リターン(復帰)
\t 水平タブ
\v 垂直タブ
\' シングル・クォーテーション '
\" ダブル・クォーテーション "
\? ?
\\ バックスラッシュ \
さぁ、これらもそれぞれ 改行の値は '\n'、水平タブの値は '\t'って言うかね?
表示できない、エスケープ文字って俺は言うね。そう、それらには表示できる文字が
存在しないから、便宜上代用されているんであって、別にその\との組み合わせが値
って言うものにはなっていないんだよ。強いて値って言うなら、割り当てられている文字コードに
対してなら理解は出来るが。実際のところ、整数型の値として文字コードが格納されているしな。
文字そのものは数値としては存在しておらず、文字コード表から該当する、登録されている文字を
表示させる仕組みがあるんであって、実態は数値なのさ。だから敢えて文字コードを参照する
ソースを書いてやったのに、理解していないなんて・・・だめだな。
お前じゃ汎用電子計算機の仕組みについて学ぶのは無理だ。その仕組みの原理にのっとって
プログラムだって作られているんだが・・・

913:デフォルトの名無しさん
07/05/15 08:00:24
感じとしてはわかったけど、その「値」はCの規格票で
定義された用語ではないな。

914:デフォルトの名無しさん
07/05/15 08:03:52
もちっと 制御 文字について理解しましょーね、大学未満さんw
さて、今日は休みだがお前らには付き合ってられん。悔しかったら
どこでも良いとは言わないが、施設の整った大学にくらい通って勉強してみろ。
実際にその原理について習う実験や研究をした人間とじゃ格が違うぜ。
もちっと電子計算機の基本原理を理解してから出直せ。
文字データそのものは数値としては存在しないよ。文字だって人間が使っている文字みたく
見えるように視覚的にコンピュータが実装している範囲内の表現能力を用いて構成されてんだから。

915:ここでフレーム投下
07/05/15 08:04:14
printf("??[foo]??");としたら、期待通りの出力になりませんでした。
期待通りに出力させるにはどうしたらいいでしょう。

916:デフォルトの名無しさん
07/05/15 08:11:06
>>912
別にお前のポリシーなんて誰も聞いてないよ

917:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/15 08:13:58
( ´ω`)

919:デフォルトの名無しさん
07/05/15 08:15:36
(´ω`)

920:デフォルトの名無しさん
07/05/15 08:16:42
どっかのブログでも書かれてたが、ほんと質問者置いてけぼりで言い争いが続くなw

921:デフォルトの名無しさん
07/05/15 08:17:31
こっち見んな

922:デフォルトの名無しさん
07/05/15 08:18:16
\0の0が数値に見えちゃったんだろうね。これはその他の\aや\tのごとく
数値ではなく数”字”だから。\の後ろに数値を参照していると思ったんだろうね、可愛そうに。
どう考えてもそれも含めて\と組み合わされた文字列をエスケープ文字として代用しているだけです
ありがとうございますた。

923:デフォルトの名無しさん
07/05/15 08:19:10
>>920
fj的フレームですらないのが困り物だな。manだの規格書だの読めば済むことをグダグダと・・・

924:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/15 08:26:52
あほが一人だと哀れなだけだが、
あほが二人だと始末に負えないな

926:デフォルトの名無しさん
07/05/15 08:27:58
あほが三人集まったらどうなるんだろ

927:デフォルトの名無しさん
07/05/15 08:27:57
>>568が始まりか…
こんなに長文を書きながら密度がスカスカの議論を延々と…

928:デフォルトの名無しさん
07/05/15 08:36:24
延々と「俺的『値』の定義」を読まされるスレはここですか?

929:デフォルトの名無しさん
07/05/15 08:36:57
>>923
void に向かって``半角''の一言をだして, 引き際失った奴を思い出したよ...
# fj だけじゃないけどな, void + ``半角''


930:デフォルトの名無しさん
07/05/15 08:40:29
まぁエスケープシーケンスの話はもう良いや。はいはい、'\0'はナル文字の値ってことで良いよ。
俺も今後'\0'はナル文字じゃなくてなる文字の値って言ってあげるから。

それよりもさぁ、最近、里田まいが気になるんよ。俺、別に今までハロプロだのモー娘。だの
まったく興味がなったんだけどさ、クイズヘキサゴン2に出ている里田まいを見て
なんかこう、キュンッときたんよ。辻と違ってまだ処女だったらええのになぁ〜なんて
期待しつつ、プログラミングをしているわけだ。そんな俺ってどうよ?C言語ならぬ
Cまでいけそうかな?

931:デフォルトの名無しさん
07/05/15 08:40:53
もまいら思い出してくれ。
文字と数値がメモリ上でも区別されてると思い込んでる人種がいるだろ。
COBOうあなにをするタテイスカンナニラセ@「

932:デフォルトの名無しさん
07/05/15 09:14:23
(´ω`)

933:デフォルトの名無しさん
07/05/15 09:25:34
こいつらが何か意味のある議論をしている・したがっていると勘違いするから混乱するんだよ。
レスを付けて何か返ってくるというリアルワールドでのコミュニケーションの代償行為をほぼ唯一の生きがいとしているだけなのに。

934:デフォルトの名無しさん
07/05/15 09:30:03
俺の周囲の場合リアルワールドの会話はこれより遥かにつまらんから困る
人の噂話、悪口、武勇伝等の自慢話ばっかりでうんざり
2chが悪口ばっかりとか生産性の無いネタばっかりって言える人は幸せ者

935:デフォルトの名無しさん
07/05/15 09:31:40
これは釣りに対して全力で釣られてみる遊び。
素人にはオススメできない。

936:デフォルトの名無しさん
07/05/15 09:32:56
おまいらじゃせいぜい2ちょんねるだな。日本語で

937:デフォルトの名無しさん
07/05/15 11:54:24
だめだこいつら…はやくなんとかしないと

938:デフォルトの名無しさん
07/05/15 12:01:11
>>1

939:デフォルトの名無しさん
07/05/15 13:04:21
昨日今日あたりで一気にスレを消費しちまったな


940:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/05/15 13:29:02
long long 使っていいならラクチンなんだがなあ。

942:デフォルトの名無しさん
07/05/15 13:32:03
>>940
lop*rop (lop>0 rop>0)について調べる場合
lop>INT_MAX/rop のときオーバーフロー
負数とか考えると面倒だね

943:デフォルトの名無しさん
07/05/15 13:40:23
インラインアセンブラ使いてーなー。

944:デフォルトの名無しさん
07/05/15 13:42:04
掛け算のオーバーフローは難しそうだな。
n周まわって 結果が正のまま とかありえそうだし

945:デフォルトの名無しさん
07/05/15 13:48:36
>>940
マルチ乙。
加減算も自分でやったんじゃないんだろ?w

Hackmem とかhacker's delight で調べてみ。
日本語訳も出版されている。


946:デフォルトの名無しさん
07/05/15 13:51:21
掛け算だけにマルチ


いやスミマセン

947:デフォルトの名無しさん
07/05/15 13:53:30
掛け算を足し算のループに変えてオーバーフローを検出くらいしか思い浮かばん…
負数は先読み計算で。

948:デフォルトの名無しさん
07/05/15 13:59:21
MSBのbit位置テーブル作っといてlookupすりゃええんちゃうの?


949:デフォルトの名無しさん
07/05/15 14:02:51
レスありがとうございます。確かにlongが使えるといいのですが、使っちゃ駄目みたいです。ちなみに先ほどのコードを使用して動かしてみました。全ては試していないのですが、
-2147483648 * -1 = -2147483648や
 2147483647 * -1 = オーバーフローと
なってしまいます。上はオーバーフローに下は
-2147483647になるようにしたいのですが、中々上手くいきません。
どうすればよいでしょうか?よろしくお願いします。



950:デフォルトの名無しさん
07/05/15 14:21:43
2進数のまま手計算してみれば?
途中経過のビットも出力して確認しながらやれよ。

951:デフォルトの名無しさん
07/05/15 14:28:25
これでダメな場合って lop==0 の時以外にあるかな?
result=lop*rop;
if(result/lop!=rop) オーバーフロー

952:デフォルトの名無しさん
07/05/15 14:54:12
>>951
っ lop=-1 rop=INT_MIN

953:デフォルトの名無しさん
07/05/15 14:56:41
>>940
加減算のオーバーフローチェックはどうやったの?

954:デフォルトの名無しさん
07/05/15 15:04:30
>>952
これやったら落ちてビビった (MacOSX 10.4.9 Intel Core 2 Duo)

955:デフォルトの名無しさん
07/05/15 15:11:19
>>954
>>952 で同じく落ちた (Win98SE C7 600MHz)

なんと言うか恐ろしい計算だw

956:デフォルトの名無しさん
07/05/15 15:29:19
>>952
これ反則だよなあ。普通の計算でも起こり得りそうで困る。

957:デフォルトの名無しさん
07/05/15 15:40:55
gccで落ちたコードの核になる部分だけ抽出。
--
movl $-2147483648, %eax
movl $-1, %ecx
idivl %ecx
--
うーん、-1で割っているだけなのに。

958:デフォルトの名無しさん
07/05/15 15:49:53
これは勉強になった。

959:デフォルトの名無しさん
07/05/15 15:53:22
>>952
C#でも落ちるかなと思ったけどOverflowExceptionが出るだけだった。

960:デフォルトの名無しさん
07/05/15 15:57:11
>>959
Exception をキャッチしてないからCだと落ちる っつーことっしょ

961:デフォルトの名無しさん
07/05/15 16:04:16
Instruction Set Reference の idiv の項を見てみた。

例外 #DE (divide error)

1. 除数が 0 の場合
2. 商が大きすぎる/小さすぎる場合

の、2. に引っかかってるみたいね。
アセンブラレベルで QWORD で使うなら十分起こりうる状況だけど、
int でやってる限りは -2147483648 / -1 でしか起こらないよね、これ。
こりゃ盲点だわ。

962:デフォルトの名無しさん
07/05/15 16:07:44
実数でも同じことできる?

963:デフォルトの名無しさん
07/05/15 16:14:23
どうでもいいけど、Linuxだと"Floating point exception"って出るんだよな。
どこがFloatingPointなんだか。

964:デフォルトの名無しさん
07/05/15 16:15:41
gcc@MacOSX でもそう出る。
イミフ。

965:デフォルトの名無しさん
07/05/15 16:15:56
>>962
起きなかった

966:デフォルトの名無しさん
07/05/15 16:18:14
実数は普通の演算で例外起きたっけ?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5227日前に更新/240 KB
担当:undef