トップページ > プログラム > 2017年03月21日 > bH1u/9cj0

書き込み順位&時間帯一覧

2 位/281 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000310225000000000013



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん (ワッチョイ 534f-v8EU)
C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
C++相談室 part129 [無断転載禁止]©2ch.net

書き込みレス一覧

C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
525 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 08:10:28.70 ID:bH1u/9cj0
未定義というのは規格で未定義ってことで、自由に未定義な部分を定義していいよ
新しく定義した部分で既存の定義を改変するようなことをしてもいいよってことだよな。
タイムマシーンはそれを悪意のあるように話を故意に捻じ曲げて
未定義=悪い動作をすることと思想を植え付けたいみたいだな
C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
527 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 08:40:29.97 ID:bH1u/9cj0
コンパイラーによって定義がかわる部分が未定義動作だろ。
コンパイラーの実装によっては未定義動作がクラッシュするとか
間違った動作をするかもしれないと
定義されてるだけで、未定義なわけではない。
C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
529 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 08:45:51.54 ID:bH1u/9cj0
未定義動作は規格で動作を定義しないということだから
コンパイラーが独自に定義していいってことだろ。
良い方向に定義するなら大歓迎。使わないなんてもったいない。
C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
531 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 09:21:56.24 ID:bH1u/9cj0
良い方向に定義された規格では未定義な動作
C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
534 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 11:27:10.77 ID:bH1u/9cj0
未定義はめんどくさいから禁止にしておこうということなかれ主義の慣例だからね。
仕来りや伝統を重んじる日本人にはこの手の人間が多い。
大事なのは自分で考えて使うか使わないか決める事。
理由も無く禁止と言われて従うのは個人の自由。
C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
536 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 11:42:42.81 ID:bH1u/9cj0
動作が未定義なわけで定義してない動作が起こるということじゃないよ
例えば一つの実装として、NULLポインターをデリファレンスすると
全てのキーワードやステートメントがJavaと置き換わるとしてもいいんだよ。
なぜなら未定義動作で今まで定義したものを変えてもいいと定義されているのだからね。
CがJavaに自由に拡張できる、これがCの寛容さなんだね。
C言語なら俺に聞け 139 [無断転載禁止]©2ch.net
538 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 12:04:48.72 ID:bH1u/9cj0
C++は初期状態がC++だからCじゃないだけだろ。
ちゃんと未定義動作をしてからCがC++にならないとCじゃない。
C++相談室 part129 [無断転載禁止]©2ch.net
783 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 12:35:09.71 ID:bH1u/9cj0
Expression templateの一時変数問題は
ムーブコンストラクターで解決された問題だよね。
C++相談室 part129 [無断転載禁止]©2ch.net
786 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 13:04:15.57 ID:bH1u/9cj0
a[0] += b[0];
a[0] += b[1];
c[0] += a[0];
c[1] += a[1];
r[0]=c[0]
r[1]=c[1]
ムーブコンストラクターを使うとこうなる
C++相談室 part129 [無断転載禁止]©2ch.net
789 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 13:29:00.21 ID:bH1u/9cj0
間違えた
tmp[0]=a[0] + b[0];
tmp[0]=a[1] + b[1];
tep[0]+=c[0];
tep[1]+=c[1];
r[0]=temp[0]
r[1]=temp[1]
一時変数が一個で良いってことだな
aかbが右辺値なら1個だ
C++相談室 part129 [無断転載禁止]©2ch.net
790 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 13:30:57.12 ID:bH1u/9cj0
また間違えた、aかbが右辺値なら0個だ
C++相談室 part129 [無断転載禁止]©2ch.net
792 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 13:32:18.98 ID:bH1u/9cj0
もう一個訂正tmp =temp,tem,tmp
C++相談室 part129 [無断転載禁止]©2ch.net
794 :デフォルトの名無しさん (ワッチョイ 534f-v8EU)[sage]:2017/03/21(火) 13:41:08.81 ID:bH1u/9cj0
実際に
tmp[0]=a[0] + b[0];
tmp[0]=a[1] + b[1];
tep[0]+=c[0];
tep[1]+=c[1];
r[0]=temp[0]
r[1]=temp[1]
上のと同等の演算が
r[0] = a[0] + b[0] + c[0];
r[1] = a[1] + b[1] + c[1];
で出来るというわけで実際に
3回に計算するわけじゃないよ


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。