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
実数は普通の演算で例外起きたっけ?
967:デフォルトの名無しさん
07/05/15 16:19:32
もう面毒せーから1/0=πという数学体系を新たに定義しようぜ
968:デフォルトの名無しさん
07/05/15 16:22:10
移項すると 1 = π × 0 になるんだけど
969:デフォルトの名無しさん
07/05/15 16:23:16
その定義上ではその移項自体がまた特殊な扱いになるのか。
970:デフォルトの名無しさん
07/05/15 16:47:17
>>963
English WikiからSIGFPEの項より
>Although SIGFPE does not necessarily involve floating-point arithmetic, there is no way to change its name without breaking backward compatibility.
971:デフォルトの名無しさん
07/05/15 17:50:56
可換環じゃなかったら最早普通の計算に使えないなw
972:デフォルトの名無しさん
07/05/15 18:17:22
次のような関数を作っていて、test3の直前でセグメントエラーが
出てしまい困っています。
R[]はintのポインタの配列で、疑似二次元配列です。
R[i]とy[]のなかで共通する数をR[i+1]に代入して、
最後に0を入れる関数です。
どうしてエラーが出るのか、誰か教えてください。
void katu(int *R[], const int i, const int y[]){
int a=0, b=0, k=0;
for(a=0; a<N; a++){
for(b=0; b<N; b++){
if(R[i][a] == y[b]){
print("test1\n");
realloc(R[i+1], sizeof(int)*(k+2));
printf("test2\n");
R[i+1][k] = y[b];
printf("test3\n");
k++;
}
if(y[b] <= 0)
break;
}
if(R[i][a] <= 0)
break;
}
R[i+1][k] = 0;
return;
}
973:デフォルトの名無しさん
07/05/15 18:20:50
>>972
reallocの戻り値捨ててどうするんだよ。
reallocが成功したら元の領域はアクセスできなくなる。
974:デフォルトの名無しさん
07/05/15 18:22:18
>>972
realloc()の使い方を勉強しろ。
それはさておき、一文字変数は判り難いだけだから止めた方がいいぞ。
#特に引き数iなんて、誤解してくれと言わんばかりだ。
975:デフォルトの名無しさん
07/05/15 18:24:42
i は for ループのカウンタ以外では使わないほうがいいかもw
976:デフォルトの名無しさん
07/05/15 18:32:47
一文字変数はカウンタくらいしか使わないな
977:デフォルトの名無しさん
07/05/15 18:32:48
aとかbをループ変数にするのはなんかいやだな。
978:デフォルトの名無しさん
07/05/15 18:34:57
(滅多に使わない)数式の実装ではまんま1文字変数使うこと多い
# コメントで参考書名+page 書いとくが
979:デフォルトの名無しさん
07/05/15 18:37:50
数式をコメントに入れておくなあ、そういう場合。
980:デフォルトの名無しさん
07/05/15 18:40:42
>>979
数行オーダーの数式なら、そうするほうが多いけどね。
RGB⇔HSV変換とかの 条件付な式だとコメント書きにくいねぇ (で、リファレンス書いて終了w)
981:デフォルトの名無しさん
07/05/15 18:48:04
こういうアルゴリズムでーす後はググれって感じでコメント書く。
982:972
07/05/15 19:18:53
>>973-974
ありがとうございます。
realloc(R[i+1], sizeof(int)*(k+2));
を、
R[i+1] = realloc(R[i+1], sizeof(int)*(k+2));
にしたら無事に動くようになりました。
結果が正しいかはこれから検討する所でありますが。
今回初めてreallocを使ってみたので、本当に間抜けなことをしていました。
重ね重ね、ありがとうございます。
変数についてですが、どうにもうまい名前の付け方が思い付きませんorz。
他の方のソースを読んで勉強していくしかないのでしょうか?
983:デフォルトの名無しさん
07/05/15 19:24:18
>>982
変数名を思いつけないと言うことは、書いているものが理解できていないか説明できないかのどちらかだろう。
前者は問題外だが、後者も社会人として必要な能力だ。「相手に伝える」ことを念頭に入れて、
変数の説明をする積もりで名前をつけてみるといい。
984:デフォルトの名無しさん
07/05/15 19:35:27
例えばこんな感じですね
int i
int love, you
985:デフォルトの名無しさん
07/05/15 19:39:59
>>984
あーそれは、愛のあるいい変数名だね。
って、違うでしょ。
986:972
07/05/15 19:42:35
>>983
「相手に伝える」ですか。心がけてみます。
どうもありがとうございます。
987:デフォルトの名無しさん
07/05/15 19:52:03
変数名なんて、それが何を入れとくための奴なのか分かるんならなんでもいいよ
988:デフォルトの名無しさん
07/05/15 19:58:41
VisualC++.NETならばC言語で.NETを使えますか?
989:デフォルトの名無しさん
07/05/15 20:11:54
いいえ。
VS2003ならMC++, VS2005ならC++/CLIでのみ.NETを使えます。
990:デフォルトの名無しさん
07/05/15 20:12:27
いいえ、専用に構文が拡張されたC++になります。
991:デフォルトの名無しさん
07/05/15 20:17:00
自前でホスティングすれば使えなくもないだろう。
992:デフォルトの名無しさん
07/05/15 20:28:25
// 次スレテンプレ
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
前スレ
C言語なら俺に聞け(入門篇) Part 12
スレリンク(tech板)
過去スレ
Part 1 スレリンク(tech板) Part 2 スレリンク(tech板)
Part 3 スレリンク(tech板) Part 4 スレリンク(tech板)
Part 5 スレリンク(tech板) Part 6 スレリンク(tech板)
Part 7 スレリンク(tech板) Part 8 スレリンク(tech板)
Part 9 スレリンク(tech板) Part 10 スレリンク(tech板)
Part 11 スレリンク(tech板)
993:デフォルトの名無しさん
07/05/15 20:29:05
関連スレ
C/C++の宿題を片付けます 86代目
スレリンク(tech板)
くだすれC言語(初心者用) Part.2
スレリンク(tech板)
スレを勃てるまでもないC/C++の質問はここで 2
スレリンク(tech板)
はきだめC/C++下級者の質問箱 2
スレリンク(tech板)
関連リンク
C 関数検索 man on WWW
URLリンク(www.linux.or.jp)
初心者のためのポイント学習C言語
URLリンク(www9.plala.or.jp)
// ここまでテンプレ
994:気まぐれアナスイ
07/05/15 20:32:34
984 differ:char 5,6,7,8,9 line 4
!(Φ_Φ+){level}
995:デフォルトの名無しさん
07/05/15 20:33:11
Cスレ乱立しすぎ
こっちへ吸収されていいと思う
【初心者歓迎】C/C++室 Ver.37【環境依存OK】
スレリンク(tech板)l50
くだすれC言語(初心者用) Part.2
スレリンク(tech板)l50
996:気まぐれアナスイ
07/05/15 21:57:37
吸収も良いですが?
スレを、そちらに変更?
997:デフォルトの名無しさん
07/05/15 22:13:54
実行の様子をテキストファイルとして作成する方法を知りたいのですが、windowsの場合どうすればいいのでしょうか?
Linuxなら./program > text.txtとするらしいのですが、windowsの場合がわかりません
998:デフォルトの名無しさん
07/05/15 22:15:03
>>997
同じ事やってみた?
999:デフォルトの名無しさん
07/05/15 22:17:13
なぜ試さない?
1000:デフォルトの名無しさん
07/05/15 22:17:54
1000ゲット
1001:1001
Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。