【初心者歓迎】C/C++室 Ver.28【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/06/09(金) 10:08:51ただしその場合、質問者は必ず、環境を書きましょう。
※sageは禁止です。
【前スレ】
【初心者歓迎】C/C++室 Ver.27【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1147183708/
【アップローダー】(質問が長い時はココ使うと便利)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0331デフォルトの名無しさん
2006/06/18(日) 21:25:20なんで?まさか2.0って小数点以下を書いたら浮動少数になるの?バカだこいつ・・・
自分の知識が浅はかだってまだ気づいてないな。
キャスト演算子の括弧の中はな〜〜〜んだ?変数を宣言するときの型が入っていると思うがねぇ〜〜
>>330
決定っつーか低レベル決定。物事を理解する頭がないってこと。
定数と変数なんて、既に中学、高校の数学でやってんだし。
違いの意味に気づいてない奴は、惰性で数値計算をしているだけの
思考能力のないアホ
0332デフォルトの名無しさん
2006/06/18(日) 21:30:59> なんで?まさか2.0って小数点以下を書いたら浮動少数になるの?バカだこいつ・・・
なるよ。馬鹿だなお前。
0333デフォルトの名無しさん
2006/06/18(日) 21:33:49筋の通った理論に基づいて話してなく、自分がバカだと思う奴がバカって
言っているだけだな。ご愁傷様。
2.0は 変数 ではなく 定数 なので、変数に使う型は関係ない。
問題は変数同士と、代入する変数の型だよ。
あの数式を見れば一目瞭然。さすがに初心者だからといって
理解力のないバカまで指導するスレじゃないんで、俺はこれで失礼するよ。
低俗な人間の問題煮まで相手にしてたら、こっちがバカになるw
0334デフォルトの名無しさん
2006/06/18(日) 21:34:150335デフォルトの名無しさん
2006/06/18(日) 21:34:580336デフォルトの名無しさん
2006/06/18(日) 21:39:10初心者が見てるだろうから騙されないように注意しておきますが、
C/C++ のソース上で 2..0 は double 型のリテラルです。
確かに変数の型とは関係ないですが、型が決まっていないわけではありません。
0337336
2006/06/18(日) 21:40:010338デフォルトの名無しさん
2006/06/18(日) 21:46:49上級者にバカにされたくなければ今すぐ考えを改めるよう注意しておきますが、
2.0がどこうではなく、「変数」と「定数」について述べていると思われますが?
それから、浮動小数についても理解しておられないようですね。
123.45を1.2345 x 10^2と表示することは理解していても
小数点が動くという意味までは理解しておられないようで?
>>334
いつまで屁理屈で自分勝手なお馬鹿な妄想してんの?
07については述べられていないし、2.0という値についてだよ?
っつか、0xとかつけるならまだしも、単に07って二桁にする意味ってなんだよ・・・
0339デフォルトの名無しさん
2006/06/18(日) 22:04:310340デフォルトの名無しさん
2006/06/18(日) 22:04:36とりあえず以下のコードの実行結果の考察について説明してもらおうか。
#include <stdio.h>
int main()
{
printf("sizeof(long)=%d\n", sizeof(long));
printf("sizeof(float)=%d\n", sizeof(float));
printf("sizeof(double)=%d\n", sizeof(double));
printf("sizeof(2)=%d\n", sizeof(2));
printf("sizeof(2.0)=%d\n", sizeof(2.0));
return 0;
}
sizeof(long)=4
sizeof(float)=4
sizeof(double)=8
sizeof(2)=4
sizeof(2.0)=8
0341デフォルトの名無しさん
2006/06/18(日) 22:05:450342デフォルトの名無しさん
2006/06/18(日) 22:06:21いや、馬鹿が一人いるだけ
0343デフォルトの名無しさん
2006/06/18(日) 22:07:44まだ居るのかよ。早く消えるか、主張の内容がわかるように書いてくれ。
「変数」と「定数」について何を述べているのか伝わってないから。
0344デフォルトの名無しさん
2006/06/18(日) 22:10:380345デフォルトの名無しさん
2006/06/18(日) 22:14:22お前が変数と定数の意味を理解していないだけじゃね?どっちも恥ずかしいから
いい加減にしろ。特に屁理屈だけしか言わないアホ、C言語の前に数学やり直せw
0346デフォルトの名無しさん
2006/06/18(日) 22:14:56(A) (double)(a+b)/2.0;
(B) (a+b)/2.0;
aとbはint型。(242の後者でaとbはshort型だが、式内での格上げで結局int型として扱われる)
だから(a+b)もA, B共にint型になる。
Aでは、それをdouble型にキャストして、2.0で割っている。Bではキャストせずに2.0で割っている。
2.0は浮動小数点リテラルで、接尾辞は何も付いていないから、double型。
つまりAは「double型の値 / double型の値」、Bは「int型の値 / double型の値」となる。
Aは除算演算子の両辺の型が同じdouble型だから、double型で除算が行われる。
Bは両辺の型が違うが、規格書ではこの場合両辺をdouble型にする事になっている。(規格書を各自見てくれ)
この際にint型の値をdouble型の値に変換する方法は、
int型の値をdouble型の値へキャスト演算子で変換する場合と全く同じである。(〃)
だからAもBも(型、値含め)全く同じ結果になる。
0347デフォルトの名無しさん
2006/06/18(日) 22:16:50>>334は
>07って書いても10進数だって
だから10進数だったら0を書く必要がないだろ・・・
その値が8進数かどうか言い出したら、最初の10進数で記述された数式ってなんだよ・・・
相手が知らないであろう事実を引き出そうって態度が痛すぎ。
論点を摩り替えて、お前は俺が知っている○×を知らない!ざま〜みろって
自分に有利なルールで勝負でもしてんの?w
0348デフォルトの名無しさん
2006/06/18(日) 22:17:36Cでは式の中で右辺値として用いられる限り、
共に何か型を持ち値を持つという点では同じなのだから、
この流れで定数と変数を区別する意味は無いだろ。
0349デフォルトの名無しさん
2006/06/18(日) 22:18:52>2.0は浮動小数点リテラルで、接尾辞は何も付いていないから、double型。
それについては、2.0が変数か定数かの方が論点になってるだろ・・・
お前、まさかいちいちdouble型で宣言したa,bをint型で宣言した変数cに代入する数式で
c= a+b / (int)2.0 ってやる?キャスト演算子についての話としても不適切だよ・・・
もうバカバッカw
0350デフォルトの名無しさん
2006/06/18(日) 22:20:08>定数と変数を区別する
残念、計算式の中で使われている変数の型が違うってところから話が始まっているんだが?
過去ログも読んでないで、論点ズラして何言ってんだ?
もう痛すぎ、質問でも質問者への答えでもないなら消えろ
0351デフォルトの名無しさん
2006/06/18(日) 22:23:11あぼーんしづらい
0352デフォルトの名無しさん
2006/06/18(日) 22:33:07察しの通り、文字列の操作部分が怪しい。
(1) int str[MAXDATA][64]; → char str[MAXDATA][64]; じゃないか?
(2) 配列の初期化されていない部分を参照しているので適当な値で初期化するか、
終端フラグをもうけるか、ソート範囲を有効なデータの範囲だけにすること。
(3) (1) と仮定して str は「大きさ64の文字列の配列」なので Insertion_sort の引数を
void Insertion_sort(int num[] , char str[][64] , int data) とする。
(4) この場合、ソートする際は文字列の実体を strcpy 等でコピーする。
0353デフォルトの名無しさん
2006/06/18(日) 22:33:36素直に「私が無知でしたごめんなさい」って言えばいいのに
8進数程度のことでがたがた言うなよ
0354デフォルトの名無しさん
2006/06/18(日) 22:34:29安心しろ。 2.0 が変数だなんて言ってるやつは居ないから、それは論点にならない。
0355デフォルトの名無しさん
2006/06/18(日) 22:51:570356デフォルトの名無しさん
2006/06/18(日) 22:52:11双方とも
0357デフォルトの名無しさん
2006/06/18(日) 23:00:39正直、double型とかの論争?に埋もれたかと思ってたら返信が…
(1)のとおりcharでした;
(2)の意味がすこし不明なんですが、まず、データのtxtファイルは>>274の上の部分のが999個くらい入ってます。
で、num[]にそれぞれの数を str[]に英字を格納してますが…
(3)と(4)とおりに直してみました…。コンパイルできず
mainの渡し方がまずいのか、根本的にわかってないのか、両方か…。
0358デフォルトの名無しさん
2006/06/18(日) 23:07:45コンパイルできないなら、エラーメッセージ読んで直せよ。
0359デフォルトの名無しさん
2006/06/18(日) 23:10:45いつまでも構うなよ・・・。
0360デフォルトの名無しさん
2006/06/18(日) 23:10:450361デフォルトの名無しさん
2006/06/18(日) 23:26:090362デフォルトの名無しさん
2006/06/18(日) 23:32:500363デフォルトの名無しさん
2006/06/18(日) 23:32:57(2) の意味は、例えば読み込んだデータの数が900個だった時
mainで Insertion_sort() を呼ぶ際、data=MAXDATA(999)になってるから
num[900]/str[900]以降のデータもあわせてソートしてるけど
じゃあ、そこに入っている値は何? ということ。
(3), (4) の通りにするとこんな感じになる。
void Insertion_sort(int num[] , char str[][64] , int data){
int i, j;
int numtemp;
char strtemp[64];
for(i = 1; i < data ; i++){
numtemp = num[i];
strcpy(strtemp, str[i]);
for(j = i; j > 0 && num[j-1] > numtemp ; j--){
num[j] = num[j-1];
strcpy(str[j], str[j-1]);
}
num[j] = numtemp;
strcpy(str[j], strtemp);
}
}
文字列のソートをポインタ操作だけで済ませたいときは >>329 のソースに
例えば char str[MAXDATA][64]; の後ろ辺りに文字列へのポインタの配列
char *ptr[MAXDATA]; を追加してデータを読み込む際にptr[]を初期化
(ptr[count] = str[count]とか)し、以降はstr[]の代わりにptr[]を操作すれば良い。
0364デフォルトの名無しさん
2006/06/18(日) 23:34:340365デフォルトの名無しさん
2006/06/18(日) 23:48:098進数なんてchmodの時ぐらいしか使わないんだから
0366デフォルトの名無しさん
2006/06/18(日) 23:51:41プログラミングの式を数学の式と同じだと思わない方がいいと俺は思う。
理由は>>348で書いたとおり。
0367デフォルトの名無しさん
2006/06/19(月) 00:00:29>プログラミングの式を数学の式と同じだと
誰が同じって言った?また妄想か・・・ループじゃなくて
無限に屁理屈が増大しているので、ここらでビックバーンでも起こして
お前ら全員吹っ飛んでくれw
0368デフォルトの名無しさん
2006/06/19(月) 00:05:33おかげさまで動きました。と同時に(2)の話も理解しました。
そこらへんもなんとかしてみます。
お世話になりました。
0369デフォルトの名無しさん
2006/06/19(月) 00:07:55なんか喋る前に>>340についてなんか解説してくれよ。
シンプルなコードにシンプルな結果だろう?
0370デフォルトの名無しさん
2006/06/19(月) 00:08:170371デフォルトの名無しさん
2006/06/19(月) 00:08:31自分で定義する関数とか変数に大文字使う人っているじゃん?
それってちょ〜〜〜〜キモイんですけどぉ〜、やめてもらえませんか〜?
大文字使う場合、変数とか関数とかじゃなくってぇ〜〜〜〜
#define MAX 10 とか変数じゃないものに使って欲しいんですけどぉ〜〜?
↓それについてあんたどう思う?
0372デフォルトの名無しさん
2006/06/19(月) 00:09:08勝手な妄想する前に>>340についてなんか解説してくれよ。
シンプルなコードにシンプルな結果だろう?
>>370
質問に対してレスすることが無いなら黙っててください。
0373デフォルトの名無しさん
2006/06/19(月) 00:11:160374デフォルトの名無しさん
2006/06/19(月) 00:12:28> 誰が同じって言った?また妄想か・・・ループじゃなくて
↓こりゃなんだ?
>>331
> 定数と変数なんて、既に中学、高校の数学でやってんだし。
別人?
0375デフォルトの名無しさん
2006/06/19(月) 00:14:58>sizeof(2.0)=8
ああ、これね。これが何か?変数じゃない値で
メモリはdoubleと同じ分だけ使っているが、それは精度を落とさぬよう
コンピュータ側がやっていることだが、それで勝手に2.0がdouble型の変数と
同じ扱いにはならない。変数と定数についてまだわかってないんだな・・・
少なくとも、変数の型が違う場合に使うキャスト演算子の話じゃないんで
何 が 言 い た い ん だ ?
0376デフォルトの名無しさん
2006/06/19(月) 00:15:14コンパイルはしなくていいからさ、実行結果についてなんか喋ってくれよ。
0377デフォルトの名無しさん
2006/06/19(月) 00:16:19誰も2.0が変数だなんて主張してないぞ。
0378デフォルトの名無しさん
2006/06/19(月) 00:17:29> それで勝手に2.0がdouble型の変数と同じ扱いにはならない。
式で参照される限りは同じだよ。いいかげんにどこが違うのか言ってみてよ。
0379デフォルトの名無しさん
2006/06/19(月) 00:18:28http://dictionary.goo.ne.jp/search.php?MT=%C4%EA%BF%F4&kind=jn
http://dictionary.goo.ne.jp/search.php?id=1772890-0000&kind=jn&mode=5
>変数の変化に関係なく一定な値を表す数
値が何なのか、分かっているならそれに応じて代入する変数の型を決めれば良いだけじゃね?
変数がなんで変数なのか、いい加減理解しとけよ、バカ共。
既に数値が分かっているものと、数値が定まっていない数値を扱うのとじゃ
すべき対処が変わってくる。
0380デフォルトの名無しさん
2006/06/19(月) 00:21:26という状況に陥ったら、まず前半の前提部分を疑ったほうがいいなw
0381デフォルトの名無しさん
2006/06/19(月) 00:22:52そうだね、だから変数の型によって出てくる「キャスト演算子」の話じゃねーっつってんだろ?
>>378
>いいかげんにどこが違うのか
それじゃ、お前はdouble型で宣言されたaを2.0で割った値を
int型の変数に代入する際には、ちゃんと 2.0 に (int)2.0 と書いて下さいね(ニヤニヤ
俺は2だってわかっている「定数」だったらわざわざ2.0なんて書かずに2って書くけどねw
質問の出所が分かってないから余計に悪いんだよな。
>>242 を読み直してから議論しろよ、こっちはもうくだらない屁理屈には付き合わない。
0382デフォルトの名無しさん
2006/06/19(月) 00:23:440383デフォルトの名無しさん
2006/06/19(月) 00:25:280384デフォルトの名無しさん
2006/06/19(月) 00:26:08>>331
>なんで?まさか2.0って小数点以下を書いたら浮動少数になるの?バカだこいつ・・・
>>376
>ああ、これね。これが何か?変数じゃない値で
>メモリはdoubleと同じ分だけ使っているが、それは精度を落とさぬよう
>コンピュータ側がやっていること
0385デフォルトの名無しさん
2006/06/19(月) 00:27:53今一度まとめて確認させてくれないか?
A. 2.0 は double 型の定数である。
B. a, b が整数型のとき ((a+b)/2.0) と ((double)(a+b)/2.0) は等価である。
どちらも真なわけだが、何か反論はあるか?
0386デフォルトの名無しさん
2006/06/19(月) 00:29:00>>381
>int型の変数に代入する際には、ちゃんと 2.0 に (int)2.0 と書いて下さいね(ニヤニヤ
>俺は2だってわかっている「定数」だったらわざわざ2.0なんて書かずに2って書くけどねw
2と2.0と書いた場合では、コンピュータの扱いが違うのだが。
>>340
>sizeof(2)=4
>sizeof(2.0)=8
わざわざ2と書かずに2.0と書くのには意味があるのか無いのか説明してもらおう。
0387366
2006/06/19(月) 00:30:59331で「定数と変数なんて、既に中学、高校の数学でやってんだし。」
と書いていることから、数学がわかればプログラミングも(当然)わかると主張しているように見受けられた。
366でアンカーを張った先が338というのはおかしかったな、それはすまん。
0388デフォルトの名無しさん
2006/06/19(月) 00:32:530389デフォルトの名無しさん
2006/06/19(月) 00:33:22・暗黙の型変換
・型拡張
0390デフォルトの名無しさん
2006/06/19(月) 00:37:34「2.0はdouble型のリテラルでしたごめんなさい」
が言えてないのか
0391デフォルトの名無しさん
2006/06/19(月) 00:40:46たしかにC/C++において、
(配列の要素数など)整数定数式が要求される場所以外では、2と(int)2.0は等価。
でも2.0はあくまでdouble型。
しかし(int)2.0とした場合、コンパイラは定数式だからコンパイル時にint型に変換してしまう。
0392263≠精度フェチ
2006/06/19(月) 00:53:22確か、失礼するのどうのと言ってたのじゃなかったのかな。
あーそうか、「去る」と言う意味ではなく文字通り、「失礼な行為を行なう」と言う意味だったのか。
#って、アンカーなくても被害妄想全開でレス来るんだろうなぁ。
0393デフォルトの名無しさん
2006/06/19(月) 11:20:31friend ostream &operator<<(ostream &o, out ob);
public:
int a;
int func() { return 99; }
};
ostream &operator<<(ostream &o, out ob)
{
o << "unko\n";
return o;
}
int main()
{
out ob;
cout << ob;
cout << ob.func();
}
これを実行したらプログラムが強制終了します。
ob.a = 10;を追加すると動きました。
変数に値を格納していないオブジェクトはメモリ上に存在しないということですか?
0394デフォルトの名無しさん
2006/06/19(月) 11:59:210395デフォルトの名無しさん
2006/06/19(月) 11:59:510396393
2006/06/19(月) 12:16:21もう一度実行してみましたがやっぱり途中で落ちます。
環境のせいだったみたいですね。
VisualC++.net2003を使っています。
0397デフォルトの名無しさん
2006/06/19(月) 12:47:000398デフォルトの名無しさん
2006/06/19(月) 14:27:17このスレは個人を特定して考えを聞くスレじゃありません。
何偉そうに 〜〜(して)いただこう?なんて催促してんの?
さて、sizeofの2.0と2について、結果が8と4バイトということだったが
それはメモリの領域のサイズのことであって、しつこいようだけど
2.0そのものは定数だし「変数じゃない」ってことは理解しているんだろうか?
そして、2.0というように、小数点以下のある値を精度を落とさずに代入するには、
浮動小数があ使えるdouble型で宣言されたものにするのが適切
というのが言語の仕様や検証結果から分かることではないだろうか?
まぁ、こっちは変数の型のキャスト演算子と計算式の中の定数について
しっかり述べているのに、 >>386 >>389 みたいな疑問を抱く奴に
いちいち答えを強要される必要はないし、答えなきゃこいつは無知だの
勝手に言われてもかまわない。俺が知らないわけじゃないし。
問題は俺が最初に何の質問に対して答えたか?
そっちを理解できない奴が勝手に自分が疑問に思ったことを
いちいちつきつけられるスレじゃないし。そんな質問は
自分で言語の仕様を知って理解すべきだろ。
どこの学校言ってんだよ、こいつら?分からなきゃ誰かに教えてもらわなきゃ
やっていけない、学習能力のない痛いお子ちゃまですか?
0399デフォルトの名無しさん
2006/06/19(月) 14:31:24君の脳内仕様はどうでもいいです><
0400デフォルトの名無しさん
2006/06/19(月) 14:55:42なんか喋る前に、>>385に答えろ、馬鹿が
お前の脳内言語仕様はちらしの裏にでもメモしとけ
0401デフォルトの名無しさん
2006/06/19(月) 15:05:04変数か定数かなんてことは誰も話題にしてないことに気づけよ。
>>349
>それについては、2.0が変数か定数かの方が論点になってるだろ・・・
その論点の発端となった、お前以外の発言番号を示せるものなら示してみろ。
0402デフォルトの名無しさん
2006/06/19(月) 15:20:12上の方で勝手に
>07って書いても10進数だって
とか言ったアホがいるから悪いんだろ。煽って荒らしているのはどっちだ?
そろそろ通報した方が良いな。ついでにどこの専門学校から書き込まれているか
調べてもらいたいね。
0403デフォルトの名無しさん
2006/06/19(月) 15:20:44>答えろ
命令しても無駄。ここで出た質問に「確実に答えてもらえる」すれじゃありません。
そろそろうざいね、低レベルな低学歴って。
0404デフォルトの名無しさん
2006/06/19(月) 15:20:45良くも悪くも周りがみんな自分と同レベルだと思わない方がいいよ。判っているとは思うけど。
0405デフォルトの名無しさん
2006/06/19(月) 15:23:10>変数か定数かなんてことは誰も話題にしてないことに気づけよ
定数の型についてが最初の話題じゃないって気づけよ?
勝手に論点すり変えて、自分勝手な議論を持ち出すなよ?
こっちが理解していないみたいなことを言うが、自分で言語の仕様を理解して
適切に記述できないことを
露 呈 し な く て 良 い か ら さ ぁ 専 門 学 校 生 w
ついでに、2.0は定数だよ?人間の目でも小数点以下があることが分かるじゃん?
コンピュータもちゃんと8バイトで計算に使う数値を格納するメモリをとってるだろ?
それはsizeofで分かったろ?いい加減うざい。
本当に通報するね。悪質だよ、ここ。
0406デフォルトの名無しさん
2006/06/19(月) 15:24:36>りがみんな自分と同レベルだと思わない
思ってないよ。初心者歓迎でしょ?少なくともこのスレで
屁理屈や理解していない議論を持ち出しているバカは低レベル。
そんな奴らにまともなソースはかけないのは分かっているし
いつまでもつまらん質問に答えようとも思わない。
が、バカはバカだときづかぜるきっかけを与えなきゃ、いつまでも社会のお荷物で困るんだよ
犯罪者になるなよ、低学歴
0407デフォルトの名無しさん
2006/06/19(月) 15:25:01ヒント:頭のおかしい人は相手にしないようにしましょう
ヒント:強度の学歴コンプレックスを持った人も相手にしないようにしましょう
0408デフォルトの名無しさん
2006/06/19(月) 15:26:41精度が保たれる型の変数は何か?
a = 1*0.5
b = 2+2
c = 2.5 + 1
さぁ、計算結果に応じて代入するabcの適切な型を宣言してください。
また、メモリの無駄な確保はしないように答えなさい(すべてdoubleは不適切とする)
これくらいの問題に答えられなきゃ、お前ら小学生からやり直せ
0409デフォルトの名無しさん
2006/06/19(月) 15:26:59頼むから通報してくれよ。マジで。
0410デフォルトの名無しさん
2006/06/19(月) 15:32:25http://www.jisc.go.jp/
「JIS検索」から規格番号 X3010でいわゆるC99、X3014でC++が見れる。
今言い合っている点に関してはC89からC99まで特に変化は無いはず。
0411デフォルトの名無しさん
2006/06/19(月) 15:35:19どう考えても2つめは計算の結果の 値 が等しいんであって
値として出された数値の型(精度)については考慮していない無意味な質問だよ。
>定数である
そうだよ?見て分かるじゃん。変数ってのは定まっていない値を入れるから
わざわざ何か値が入りますよって宣言してメモリを確保してんだから。
定数だけどdouble型とかは関係ない。double型って
浮動小数でしょ?2.0は固定小数だよ?頭大丈夫か・・・
既に浮動小数の表現についても過去ログにレスがあるけど?
123.45だったら1.2345 x 10^2って表したら浮動小数(double型)って思えと言うのか?ってのは
ご自由に解釈してください。少なくとも2.0は固定小数であってdouble型とは関係ない。
>等価である。
値が同じだからといって、変数の型まで不適切にして良いわけじゃない。
キャスト演算子についてもバグが報告されている。
最初っから数式が小数点以下も扱うもんだと分かったら
その計算式をの値を代入する変数の型はdoubleにしときゃ良いって話で終わるよ?
自分の目でそういう部分を判断できなきゃ、自分が適切なプログラムを作れなくて困るだけ
一生2.0が何型か?について議論してなさい。
とりあえず答えたけど?自分(質問者)はバカですが何か?って質問に対して
あ〜そうですね?って俺に答えさせただけだな。恥ずかしいね
本当に頭の弱い人って。お願いだから浅はかな考えで社会に出て
犯罪を犯さないでくれ。いつまでもあんたらみたいな「低俗な人間」に
入れ知恵をするつもりはないし、お前らもその程度じゃ賢くはなれんよ。
何でもかんでも答えてもらえる、自分の思った通りに答えない人は嫌いになる
みたいな感情まで持ち込んでどうすんだよ?プログラムは感情なんて当てにしてくれないぞw
0412デフォルトの名無しさん
2006/06/19(月) 15:35:35わかっているならバカや低レベルや初心者にもわかりやすく書いてください。
バカは死んでも直らないと言う信念をお持ちであれば、
せめて低レベルや初心者だけでも相手してやってください。
0413デフォルトの名無しさん
2006/06/19(月) 15:47:31> >>385の何を間違えだと言った?論点がズレてるね。
> どう考えても2つめは計算の結果の 値 が等しいんであって
ヒント:暗黙の型変換(キャスト)
0414デフォルトの名無しさん
2006/06/19(月) 15:51:37つーか定数ってなに?
0415デフォルトの名無しさん
2006/06/19(月) 15:54:29>ああ、これね。これが何か?変数じゃない値で
>メモリはdoubleと同じ分だけ使っているが、それは精度を落とさぬよう
>コンピュータ側がやっていること
だったら、>>242の下のコードは全く問題ないね!
0416デフォルトの名無しさん
2006/06/19(月) 15:54:53C/C++には“言語仕様上”、固定小数と言う概念は無い。
C/C++で数値を扱う型は数値型と分類されている。
数値型は整数型と浮動小数点数型に分かれる。
当然intは整数型、doubleは浮動小数点数型に分類される。
標準規格ではリテラル(お前の言う定数)がどんな型になるかも規定されている。(>>410から見てみろ)
それによればC/C++において2.0はdouble型になる。
俺が語っているのでは無い。規格書がそう語っているのだ。
0417デフォルトの名無しさん
2006/06/19(月) 15:54:59> C/C++的には「2.0」は浮動小数点数リテラルであって、それ以上でもそれ以下でもないと思うが。
その通り。
> つーか定数ってなに?
リテラル(Literal)の和訳。
0418デフォルトの名無しさん
2006/06/19(月) 15:55:22めんどくさいので訂正はしない。
0419デフォルトの名無しさん
2006/06/19(月) 16:01:10変数の型についてが最初の話題じゃないって気づけよ?
勝手に論点すり変えて、自分勝手な議論を持ち出すなよ?
こっちが理解していないみたいなことを言うが、自分で言語の仕様を理解して
適切に記述できないことを
露 呈 し な く て 良 い か ら さ ぁ 専 門 学 校 生 w
0420デフォルトの名無しさん
2006/06/19(月) 16:03:32定数と書くと、#defineやconst (C++)などによって名前を付けたものというイメージを持つ人が多いんだ。
0421デフォルトの名無しさん
2006/06/19(月) 16:07:23C/C++において385の2つの式は、結果の型も同じ。
そういう規則だから。
0422デフォルトの名無しさん
2006/06/19(月) 16:09:08>ヒント:暗黙の型変換(キャスト)
それがバグの原因だよ。もっと必要な文献に目を向けたらどうだ?
だから適切にキャスト演算子を使うか、最初っから計算結果を代入する型にあわせて
計算式の中に使う変数の型もあわせておいた方が良いってのが報告されてんだよ
0423デフォルトの名無しさん
2006/06/19(月) 16:11:07だから?代入する型の変数をどうしたら良いか?って話になるなるだけじゃん。
まだわかってないな・・・精度の問題なのか、値が扱うメモリの領域の大きさがどうなのか?
議論をはっきりしろよ、おめぇ騒ぐだけで相手を無理に否定しようとしているだけじゃん。
相手がどうだろうと、言語を作った人が決めたルールや仕様書があんだろが?
0424デフォルトの名無しさん
2006/06/19(月) 16:11:06それとコード中に出てくる数値リテラルなどのことは「直値」と言うな。
「リテラル」は対人コミュニケーションでは使わない。相手が理解できない場合があるからな。
自分が書く文章では使うが。
0425デフォルトの名無しさん
2006/06/19(月) 16:12:43ヒント:頭のおかしい人の相手はしないようにしましょう
0426デフォルトの名無しさん
2006/06/19(月) 16:13:33今はバグの話をしているのではないと俺は思っている。
暗黙の型変換によって385のBの2つの式は
同じ意味(結果の型・値、途中の計算過程など全てが等価)になると主張するだけだ。
0427デフォルトの名無しさん
2006/06/19(月) 16:15:24俺が気付いていないうちに242のcがdoubleかfloatかの違いの話になっていた?
今まで俺はずっと代入式の右辺の部分(385のB)についてだけ話していると思っていたよ。
0428デフォルトの名無しさん
2006/06/19(月) 16:16:22式1 : (double) (a+b)/2.0;
演算手順
1. a+b を演算
→a、b共にint型のためint型として演算
2. (a+b) の演算結果をdouble型にキャスト
3. [2の結果] / 2.0 を演算
→[2の結果]、2.0 共にdouble型のためdouble型として演算
式2 : (a+b)/2.0;
演算手順
1. a+b を演算
→a、b共にint型のためint型として演算
2. (a+b) の演算結果をdouble型にキャスト
→暗黙の型変換
3. [2の結果] / 2.0 を演算
→[2の結果]、2.0 共にdouble型のためdouble型として演算
君は「結果の値のみ」が等しいと言った。
しかし、C/C++の規格に沿って見ると、
手順も一緒であるが、どこがどう違うというのかね?
0429デフォルトの名無しさん
2006/06/19(月) 16:19:39それだと式2の暗黙の型変換が行われるタイミングが勘違いされそう。
double型の値で割られるからdouble型へ暗黙の型変換がなされるという風に読み取れない。
0430デフォルトの名無しさん
2006/06/19(月) 16:23:41■ このスレッドは過去ログ倉庫に格納されています