802 :
ほんたま :
04/12/08 21:17:57 >>787 にーよ、そのソースは使えんぞ!わかるか?
にーよ、int a[100];
と配列の要素数を100までしか宣言してないのに、
for(i=100; i<200; i++) {
a[j]=i;
}
はないぞ。わかるか?
つまり配列外の未定義の領域に不正に代入したことになり、プログラムは強制終了するぞ。
にーよ、おりはコンパイラそのものをつくって公開している2ch唯一の神だ♪何でも聞け!!
もういいじゃん、文系、理系関係、数学好き・嫌いとか関係ないって。 それより、単位欲しくて教えて君なんだろ、ほっとけって。 お金欲しくて教えて君も、ほっとけ。
804 :
ほんたま :04/12/08 21:23:32
>>787 にーよ、そのソースは使えんぞ!わかるか?
にーよ、int a[100];
と配列の要素数を100までしか宣言してないのに、
for(i=100; i<200; i++) {
a[j]=i;
}
はないぞ。わかるか?
つまり配列外の未定義の領域に不正に代入したことになり、プログラムは強制終了するぞ。
にーよ、おりはコンパイラそのものをつくって公開している2ch唯一の神だ♪何でも聞け!!
>>802 お前もバカ学生と同列か。
コピペしてコンパイラに食わせてみろ、低能。
>>804 釣りだ、釣りだ!すごい大胆だ!これなら、釣られても良いかなぁ、なんて思った漏れはバカだ!
メモリの構造が分からないバカはVBでもやってて下さい
808 :
ほんたま :04/12/08 21:33:46
>>805 ハゲ!!
こんなものコンパイラに食わせなくても見た瞬間にわかるわい!!
いいか、にーよ、正確には、
int a[100];
int i;
int j = 0;
と宣言しているから、
for(i=100; i<200; i++) {
a[j]=i;
}
ループの中で、a[100]となったとき、iの値100は、
int a[100];の後の、
int iに代入され、
a[101]となったとき、iの値101は、
さらにその後の、
int jに代入されることになるんだよ、ハゲ!!
そして102から、変数はどこにも宣言されてないので、未定義の領域にアクセスしたことになり強制終了するんだよ!!
またint j=0;だが、プログラム中のどこにも使われてないから、エラーは出ないが無駄なコードだぞ。わかるかな?
もし、たまたまその102以降のデータを格納する部分のメモリがあいてたら?
配列変数aの添え字に使われてるのはiじゃなくjなんだが。 アイじゃなくジェイなんだが。
>>808 >またint j=0;だが、プログラム中のどこにも使われてないから、エラーは出ないが無駄なコードだぞ。わかるかな?
あ〜ん、もう、釣らないでぇ(はぁと
812 :
ほんたま :04/12/08 21:45:50
>>809 にーよ、鋭いな!!
にーよ、おりのスリムドカンでコンパイルすればそのエラーは出ないこともあるよ。
というのは、おりのスリムドカンではデータはコードセクションの一番最後の格納され、余った領域は0で埋められるから、その0が並んだ領域に書き込まれる可能性がある。
そうすればエラーは出ないな…だがそれ以外では、実行時エラーとなる。
つーか、Visual C++でコンパイルすれば、これはコンパイル時エラーになるな。
つーか、よく見たら、a[j]=i; の[]中はiではなくjだったのね…
道理でiの左下に変な髭がついてると思った…スマソ
>>810 ああっ、先に書かれた。orz
つーわけだ、大した神様だな、ハゲの沢村よ。w
スリムドカンってどっかで聴いた事あるなと思ったらダイエット薬品じゃねぇか
815 :
ほんたま :04/12/08 21:49:29
>>813 にーよ、おりは神には間違いないが、最近視力が落ちてきたんだ。
これは神の唯一の弱点といえるな♪
ハゲなのにかみ様
warota
818 :
ほんたま :04/12/08 21:56:49
にーらよ、そもそも
>>787 が、
int a[100];と紛らわしいこと書いてるから、
配列の添え字がiと思っちゃったじゃねーか!!
a[0]とa[1]の2つしか使わねーんなら、
int a[2];でいーじゃねーか、ハゲ!!
おりは神であることには間違いないが視力が悪いんだから、ちゃんと書け!!
にーらよ、これは無駄なコードを書いてはいけないという教訓にするといいぞ♪
にーらよ、為になるかな?どうじ?
ここまでワロタ
どっかのスレで「波形がなんとか」とか言って鬼の首取ったみたいに騒いでいた奴がいたよな。 あれ、誰だったっけ?な、ほんたま。 いやぁ、傑作だねぇ、「コンパイラに食わせなくても見た瞬間にわかる」か。w
>>818 顔真っ赤にして照れ隠ししなくてもいいよ、お坊ちゃん。
俺は無知な厨房を責めたりしないからサ。
厨な787です 一気にスレが伸びてますが、一体なんなんでしょう(謎 ちなみにボクはプログラム歴半年の大学生なので冗談半分で書いたのですが・・・ 【int a[100];】 ではなく 【int a[101];】とするべきでしょうか
学校の授業で習ってるレベルなのでまだ入門者です。
とりあえずありったけ確保しとけば問題なし
>>787 大学生は大学生らさいくSEXしてなさい
配列は1つぶん多く確保しとけって言われますが、コンパイルしてもエラーにならないのは何故です?
コンパイラが低脳だから
>>1-828 ,へ、 /^i
| \〉`ヽ-―ー--< 〈\ |
7 , ''''''、, '''''' 、 ヽ
/ / \、i, ,ノ ヽ ヽ
| ((●) -(●) ) | ・・・・・・・・ゴクリ
/ 彡 ノ(、_, )ヽ ミミ 、
く彡彡 `-=ニ=- ' ミミミ ヽ
`< `ニニ´ ミミ彳ヘ
> ___/ \
/ 7 \
| /
>>823 いや、問題はない。
コードの質はともかく、ちゃんと動作するし、書いたとおりの結果も出力される。
単に馬鹿がバカな勘違いをしたというだけ。
宿題の回答としてなら、普通は
for(i=0;i<100;i++){
a[i] = i+100;
}
for(i=0;i<100;i++){
printf("%d\n",a[i]);
printf("%4d\n",a[i]);
}
として格納と出力を別のループに分けるけどね。
それくらい。
キミなら
>>785 とか、ほんたまみたいにはならないと思うよ。
がんがれ。
まぁ、回答は好みの問題もあるからいんだけど、、、
iとjが紛らわしいから、jを使うなとか言われると、
胸くそ悪くなるんだよ、ボケェ!
>>818
>>831 あ、たしかに押しつけがましかったかも。申し訳ない。
>iとjが紛らわしいから、jを使うなとか言われると、
>胸くそ悪くなるんだよ、ボケェ!
>>818 同感。
特に自分の失敗を誤魔化すための屁理屈だから余計に腹が立つ。
絶対に仕事で組みたくないタイプだよな。
833 :
ほんたま :04/12/08 22:54:03
にーらーーーーーーーーっ、勝ったーーーーーーーーーーーーっ!!! にーらーーーーーーーーっ、配列の添え字がじぇーでもエラーが出るぞ、ぎゃははは♪ いいか、にーらよ、 ループに入る前j=0;だろ? すると、 for(i=100; i<200; i++) { } ループの中で最初のループが、 a[j]はa[0]、 a[j++]がa[1]になるわけだ。 ではループが最後に達したときはどうなるかな? iは199までループする。 すると、 a[j]はa[99]のとき、 a[j++]a[100]になるわけだ。 だが、宣言はint a[100];だぞ。 つまりaの添え字はa[99]までしか使えねーんだよ。 わはは、a[100だと不正なアクセスになるじゃねーか!!! わははははーーーーーーっ、勝ったーーーーーーーーーーーーっ!!! おりは正しかったーーーーーーーーーーーっ!!!! やはり神ーーーーーーーーーーーーーーーーーーーーーーーっ!!!わはは♪
ほんと精神年齢低いんだな、感動した
>>833 後置記法インクリメント演算子が評価されるのはいつなのかな、神様?
>>833 一つだけ教えてくれ。
お前仕事してるか?してるとしたら、どこに勤めてるんだ?
いやな、お前のとことだけは仕事したくないから、教えて欲しいんだ。
盛り上がってる?
得意げな顔して何が、エラー出た、だ。
喧嘩両成敗、ほんたまも大学生もクズさ というよりもな 死んで!!
ネットをはじめたばかりの友人が、「面白いサイトをおしえてくれ」 としきりに言うので、2chを教えてあげました。 すると、彼は見事に厨房になってしまったのです(27歳ですが) 居酒屋に入り、席につくなり「さあ、マターリしようか!!」 会話中も「その話はサゲで!」「オマエモナー!」「やっぱJAVAはOFFだよな!(Lhacaの使い方さえ解らないレベルなのに)」 嬉々として覚えたての用語を連発しています。 先日など、河原でバーベキューをした時、あまり面識のない人に 「ドキュソって知ってる?元は目撃ドキュンの・・・」などと話し出し、 しまいには酔っ払って川べりに座り、人差し指を天に向かって上げ、 「イッテヨシ!イッテヨシ!イッテヨシ!!!」と叫んでいるのです。 一緒にいる私は痛さで恥ずかしくてしょうがありません。 現実で2ch用語連発するなよ、と言うと 「うるせえドキュソ!あぼーんだ!」 と訳のわからない事を言い、相手にされません。 どうすれば良いでしょうか?まさかこんな事になるとは思いませんでした。
>>841 あんた、間違い。
int a[101];
にして、return(0);の前に
for(i=0;i<101;i++){
printf("%d,%d\n",i,a[i]);
}
を入れて実行してみ。
>>833 おまえがどんなコンパイラ使ってるかしらんが、ワシのはERRORなんて出ない