[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
754
(1): 2017/06/28(水)23:59 ID:lG20CtJa(3/3) AAS
なるほど>>738を初期化でなくcopy/move elisionの話だと勘違いしたままだとこのようなとんちんかんなレスになるのだな
残念なのが>>739-742を読んでも勘違いに気付かないことだ
755: 2017/06/29(木)00:23 ID:0BA30UdR(1) AAS
>>754
とりあえずお前が一番元のレス読んでないと言うことは解ったよ。
読んでるというなら彼が何を疑問に思ってるか、そしてそれへの説明をしてみるといい
756: 2017/06/29(木)08:20 ID:J9UCM8ul(1) AAS
>>752
恐らく>>751は「コピーしようがしまいが」について、コンパイル可否(>>750で書いたコピーされてはは困る例)ではなく
「デフォルトコンストラクターで構築したものとそれをコピーして構築したものを概念的に同一視することの是非」こそが論点と主張している
その片鱗が>>749
757: 2017/06/30(金)16:06 ID:YTlik2k9(1) AAS
printf("おちんぽじゅぽじゅぽ")
758: 2017/06/30(金)23:27 ID:SxEaPPM4(1) AAS
catch のところで例外を再スローすると
再スローされた例外の型は、catchの所に書いたスーパークラスの型に
差し代わってしまうの?
759: 2017/06/30(金)23:50 ID:wfcExao2(1) AAS
式無しのthrow;なら元の型のまま
760: 2017/07/01(土)17:28 ID:T5yR4ind(1) AAS
「型に差し代わってしまうの?」
 ↓
「〜なら元の型のまま」

確かにその通りなのだが、「型」に着目するあたり、
どうも仕様を正しく理解していないのではという気がしてならない
761: 2017/07/01(土)22:43 ID:mdEe7tMk(1) AAS
c++は難しい分ほかの言語より色々できると聞いたんですがどういうことができるのでしょうか?
762
(1): 2017/07/01(土)22:56 ID:qtP/3v2i(1) AAS
メモリアクセスができます
763
(1): 2017/07/01(土)23:22 ID:sgaEl9jo(1) AAS
難しいからではなく低級言語なのでハードウェアを直接操作するようなプログラムも書ける
764: 2017/07/02(日)00:10 ID:kxMmAO7v(1) AAS
>>762
>>763
ハードウェアに直接操作やメモリアクセスですか
トンクスです
765
(3): 2017/07/02(日)10:29 ID:TVPISEnD(1) AAS
質問です
doubleの計算誤差ってちゃんと考慮必要でしょうか?
数桁の四則演算なら誤差なしと考えていいですか?
766
(1): 2017/07/02(日)12:30 ID:w2e8t6sv(1) AAS
考慮が必要な時もあるし
不要な時もある
767: 765 2017/07/02(日)13:04 ID:hIH6r6Dk(1) AAS
>>766
考慮必要ですか、、
ありがとうございます
768
(2): 2017/07/02(日)14:24 ID:O/UEQvVu(1/2) AAS
精度保証付きの演算ライブラリ使えば?
769
(1): 2017/07/02(日)15:42 ID:1Me6IR2g(1/16) AAS
4倍精度でも8倍精度でも多倍長でも整数でも有理数でも、使い方を間違えば誤差が問題になる

安直な処理で一番問題が発生しやすいのが整数丸めと比較
ごくごく微妙な誤差は何時でも含んでいると思うと良い
770
(1): 2017/07/02(日)15:45 ID:1Me6IR2g(2/16) AAS
>>768
大抵の演算ライブラリや演算器は精度の保証がある
771
(1): 2017/07/02(日)16:02 ID:O/UEQvVu(2/2) AAS
>>770
いや、そうじゃなくて浮動小数点計算誤差由来の誤差を解決するための分野とライブラリがあるんだよ
解をレンジで持ち続けるみたいな感じ
Accuracy guaranteed numerical calculation でググるとたくさん出てくるよ
772: 2017/07/02(日)16:12 ID:1Me6IR2g(3/16) AAS
>>771
解をレンジで持ち続けて何か解決出来ると思うか?
>>765レベルの人が
773
(1): 2017/07/02(日)16:13 ID:9wrwY3nx(1/4) AAS
mpir、gmpだろ。これ使えば円周率1万でも1億でも正確に計算できるはず
774: 2017/07/02(日)16:15 ID:1Me6IR2g(4/16) AAS
有理数を有理数のまま保持している分には、四則演算では誤差が発生しない

もちろんオーバーフローしない条件で
775: 2017/07/02(日)16:16 ID:1Me6IR2g(5/16) AAS
>>773
前提条件は数桁の四則演算
776: 2017/07/02(日)16:18 ID:1Me6IR2g(6/16) AAS
doubleで計算を前提とし、誤差が問題となりやすい場面だけ教えてあげれば十分
777
(2): 2017/07/02(日)16:22 ID:9wrwY3nx(2/4) AAS
実際、浮動小数点型の誤差は無視できないぞ。
float型とか、容量が少ないほど。情報処理の入門書の最初から出てくる話題だろ。
778: 2017/07/02(日)16:22 ID:jIucKliD(1) AAS
いい加減スレタイ変えろよ

【初心者姦ゲイ】C/C++室 Ver.100【姦狂依存OK】
779: 2017/07/02(日)16:36 ID:1Me6IR2g(7/16) AAS
>>777
無視できる場合もあるし出来ない場合もある
floatや半精度があるのはそれで十分な場合があるから
780: 2017/07/02(日)16:37 ID:1Me6IR2g(8/16) AAS
doubleより前に、整数演算の誤差を学ばなければならないレベルかも
781: 2017/07/02(日)16:42 ID:1Me6IR2g(9/16) AAS
>>765
>>768
>>777
まとめて
782
(2): 2017/07/02(日)17:12 ID:ZK/8Emjh(1) AAS
コーディング規約で
float、doubleは使用禁止が正解
783
(1): 2017/07/02(日)18:20 ID:p749GQFM(1/3) AAS
1/3の結果に3を掛けても1にならないとか、
0.1を10回足し合わせても1と一致しないとか、
その辺りは分かっているのかな?
784: 2017/07/02(日)18:24 ID:p749GQFM(2/3) AAS
>>782
質問者は浮動小数点数の演算のどこに注意点があるか分かっていない状態で、
いいから浮動小数点数は使うな、
というのは回答として乱暴過ぎるだろう。
785
(2): 2017/07/02(日)18:38 ID:FdY2ZCkQ(1) AAS
・同じ計算をするんでも
なるべく精度の高いアルゴリズムを選ぶ
・0との比較では、絶対値と計算機epsilonの比較を用いる

他にある?
786
(1): 2017/07/02(日)18:50 ID:MoO3L/4V(1/2) AAS
>・0との比較では、絶対値と計算機epsilonの比較を用いる

何かとごっちゃになってる気がする。
計算の収束判定等で用いるのは機械イプシロンじゃない。
787: 2017/07/02(日)19:09 ID:MlDTzv8m(1) AAS
>>785
0との比較に限らず、比較には絶対値の大きさに応じたεの考慮が必要。
788: 2017/07/02(日)19:18 ID:ttjnRDkm(1) AAS
機械イプシロンはあくまでも最大値だよね
789: 2017/07/02(日)20:17 ID:+3axEb/N(1/3) AAS
初めて知りました
790: 2017/07/02(日)20:44 ID:+3axEb/N(2/3) AAS
数桁のdouble計算で誤差が問題になる場面では「誤差が存在する」ことが問題であって、精度を上げることは(誤差の大小は)本質的な解決でないような
(3.1 - 2.9 > 0.2) != (3.1 > 2.9 + 0.2)みたいな
791: 2017/07/02(日)21:37 ID:9wrwY3nx(3/4) AAS
計算順序で誤差が違ってくるのは教科書でよくかいてある
792
(4): 2017/07/02(日)22:54 ID:ynDhLM7Z(1) AAS
情報処理資格に受かっていない人が、C/C++ をプログラミングするなど、10年早い

C/C++ は、直接デバイスを扱うから、自作パソコンを作れるぐらいに、
かなりパソコン内部の装置の仕組みを、知っていないと無理

さらに組み込みなら、高度情報処理のエンベッド資格も必要
793: 2017/07/02(日)22:59 ID:9wrwY3nx(4/4) AAS
そんなことはない
794: 2017/07/02(日)22:59 ID:MoO3L/4V(2/2) AAS
お前は試験に受かってからプログラミング始めるのかw
795: 2017/07/02(日)23:03 ID:UYpoTCPe(1) AAS
パソコンって、アドレスバスの、メモリ読み書きで、
デバイスを、直接操作するのか?
それとも、アドレスA0000に文字を書き込むのか?
その知識、30年くらい、遅くね?
796: 2017/07/02(日)23:32 ID:1Me6IR2g(10/16) AAS
>>782
整数も除算に誤差があるから禁止
797
(1): 2017/07/02(日)23:32 ID:1Me6IR2g(11/16) AAS
>>783
整数でも1/3*3は1にならない
798
(1): 2017/07/02(日)23:35 ID:1Me6IR2g(12/16) AAS
>>785
コストも考えなさい

epsilonは>>786の通り
補足すると、
収束判定に限らず、普通はepsilonで判定しない
799: 2017/07/02(日)23:36 ID:iWsKHD5Z(1/2) AAS
0になるし誤差はないな
800: 2017/07/02(日)23:36 ID:1Me6IR2g(13/16) AAS
>>792
情報処理資格www
なんの役にもたたない
801: 2017/07/02(日)23:36 ID:iWsKHD5Z(2/2) AAS
って触れちゃダメな奴だったかすまん
802: 2017/07/02(日)23:38 ID:+3axEb/N(3/3) AAS
前回、共用体の非アクティブメンバーアクセスが許されるcommon initial sequenceの条件である「型の互換性」に目を付けたレスを見た時は
>>792がもう少し見所の有る奴だと思っていた(過去形)
803: 2017/07/02(日)23:51 ID:p749GQFM(3/3) AAS
>>797
すまん、1/3は1.0/3とか書くべきところだったな。
804: 2017/07/02(日)23:53 ID:1Me6IR2g(14/16) AAS
いやいやそこじゃなくて
805
(1): 2017/07/02(日)23:55 ID:1Me6IR2g(15/16) AAS
1.0/3.0*3.0 が 1.0にならないことがある
1/3*3 が 1にならない

小数演算特有ではない
806: 2017/07/02(日)23:59 ID:1Me6IR2g(16/16) AAS
0.1を10回足しても1にならないことがあるって言うのも小数特有ではない

0.1は普通のfloatやdoubleでは表現できず、コンパイル時に近似値に変換する
この意味では以下と本質的には同じ

int a = 0.1;
int b = a * 10;
807: 2017/07/03(月)00:01 ID:UYk8Gv77(1/2) AAS
>>792
自作って高価なプラモデルだぞ。。。
夢見過ぎ。
直接ってもなぁ。。。
昔はx86限定で直接レジスタ弄れる命令あったんだが、その命令は今じゃ優先的にレジスタ使ってね☆って意味に変質してるもんなぁ。。。
今のCは思ってるより下級言語じゃ無いぞ。
普通の言語よりゃハードに近いけどさ。
808: 2017/07/03(月)00:02 ID:Ds1QZZUB(1/5) AAS
doubleがintに比べて誤差が少ないため、誤差を気にせずに使ってしまいやすい

だから注意の意味を含めて誤差が大袈裟に語られる傾向がある

当然整数の方が(普通は)はるかに誤差が大きい
809: 2017/07/03(月)00:03 ID:NRAuceWo(1) AAS
>>805
それは知ってるけど元の質問者がdoubleの演算誤差について聞いているのだから、整数の除算の件は話が外れていると思う。
この手のスレに良くあることだけど、元の質問から勝手に話が発散して何を目的に議論しているのかが分からなくなるね。
810: 2017/07/03(月)00:04 ID:Ds1QZZUB(2/5) AAS
いやだから、

気を付けるべき点は >>769 の後半にまとめたつもりだけど
811: 2017/07/03(月)00:10 ID:Ds1QZZUB(3/5) AAS
よくやりがちな例は、

for (double a = 0; a <= 1 ; a += 0.1)

みたいな比較と

double a = sqrt(3);
double b = a * a;
int c = b;

みたいな整数丸め
812: 2017/07/03(月)00:12 ID:Ds1QZZUB(4/5) AAS
これは、
double に限らす10000桁精度の演算ライブラリでも全く同じ問題がほぼ同じ率で起こる
813: 2017/07/03(月)00:14 ID:Ds1QZZUB(5/5) AAS
前者はループが10回か11回かはバクチで、
後者はcが2になるか3になるかはバクチ
814: 2017/07/03(月)00:19 ID:UYk8Gv77(2/2) AAS
なんかそんなの読んだことあるな。
計算結果は精度の範囲内だけど、計算途中で精度超えて結果に誤差が出る的な。
なんか対策あったぞ。
815
(1): 2017/07/03(月)04:06 ID:yzYakBEJ(1) AAS
>>798
普通は計算機epsilonで判定は
しない、これはわかりました
じゃあどんな値で判定するんですか?
816: 2017/07/03(月)04:57 ID:BlNCaFmm(1) AAS
>>792
カーニハンもリッチーも受かっていないようだが?
817: 2017/07/03(月)08:32 ID:rvaVDuHz(1) AAS
>>815
対象の値が含み得る誤差を用いる。
機械イプシロン(を指数によってスケールしたもの)は誤差の下限を示しているだけに過ぎない。
818: 2017/07/03(月)11:17 ID:rWGDP/Vn(1) AAS
下限ではない
下限はその半分
819
(2): 2017/07/03(月)19:44 ID:BsrmCust(1) AAS
VisualC++とそれ以外用とで別の関数を用意して、プリプロセッサを使用してコンパイル時に選択したいと思っています
この場合、関数全体を#ifdef _MSC_VER〜#endifで囲うことになるのですか?
もう少しきれいな書き方があれば教えてください
よろしくお願いします
820: 2017/07/03(月)20:12 ID:oiFj/hKr(1) AAS
>>819
機種依存部分をライブラリ化してリンク時に差し替えるとか
821: 2017/07/03(月)20:21 ID:tl3oQzgh(1) AAS
関数全体を切り替えたいなら関数全体を複数記述するしかあるまい

部分的に違うだけならその違う部分的だけ切り替えればいい

関数全体を複数記述する方法はいくつかある
822: 2017/07/04(火)00:10 ID:2/r2iAfu(1) AAS
>>819
別にそれでいいじゃん。大量にあるならファイル分ければいいし
823
(2): 2017/07/04(火)09:38 ID:GKwjzP9N(1/2) AAS
class A {}
int main{
A a; //c++
A a = new A(); //c#
}
このc++の「A a;」は、c#の「A a = new A();」と同じ意味ということでいいんですか?
824
(2): 2017/07/04(火)10:10 ID:A8K7ipT2(1) AAS
>>823
同じになるねぇ
あえて違う点を挙げるとすればAが作成される領域がスタックかヒープか
でも意識するほどのことじゃない
825: 2017/07/04(火)10:53 ID:GKwjzP9N(2/2) AAS
>>824
スッキリしました。ありがとうございます。
826: 2017/07/04(火)12:24 ID:rriFyG5E(1) AAS
いやC++やるならスタックかヒープかは意識しなきゃだめだろ
deleteどうすんの
827: 2017/07/04(火)12:53 ID:Tv7aUxog(1) AAS
>>824
> Aが作成される領域がスタックかヒープか
いや、それは意識しろよ
828: 2017/07/04(火)16:07 ID:BdJEhj1W(1) AAS
ヒープはC#の方だろ、とりあえず意識しないでも
829
(1): 2017/07/04(火)17:16 ID:RU97axJ4(1) AAS
C#はdelete書かないんだからC++なら
deleteが不要な「A a;」を同等と捉えるのが筋
配置場所なんかどうでもええ
830: 2017/07/04(火)18:37 ID:eP5xPbfu(1) AAS
newだとスコープ抜けても残るんじゃ?
831: 2017/07/04(火)18:44 ID:xAcMjOR1(1) AAS
C#だとスマポみたいになるんかね
832: 2017/07/04(火)19:56 ID:3bDdeHlE(1) AAS
c#はGC管理、classは参照型
833: 2017/07/04(火)20:17 ID:olJiM2Cb(1/5) AAS
>>829
寿命が全然違うじゃないですかぁ
834: 2017/07/04(火)20:31 ID:L7t36fm1(1) AAS
コストも
835: 2017/07/04(火)21:02 ID:V6j6UQbw(1) AAS
で?
836: 2017/07/04(火)21:52 ID:+pBAjacr(1) AAS
すげえ考え方の奴が出てきてワロッシュ
837
(1): 2017/07/04(火)22:13 ID:kiqPrlXB(1/3) AAS
寿命だのコストだの言うけど
そんな実相依存どうやって見積もるの?
無意味な揚げ足取りはやめたら?
838: 2017/07/04(火)22:14 ID:VwPftttd(1/3) AAS
え?
839: 2017/07/04(火)22:17 ID:TrkY+sIz(1/2) AAS
C++ 側は実装依存な部分あるっけ? C#側はよーわからんけど
840: 2017/07/04(火)22:19 ID:dCdz+uzl(1) AAS
こっちはC++スレだぞ?C++でスタックとヒープのコストや寿命の違いを意識する必要がないってマジでいってるのかよ
841: 2017/07/04(火)22:29 ID:kiqPrlXB(2/3) AAS
newの方はC#のって前置きがあるだろうが
よく読め
まあ元々の質問もあれだが
842
(2): 2017/07/04(火)22:42 ID:IS9gvNe4(1) AAS
コストは
c++のnew>>(超えられない壁)>>c#のnew>スタック
全然違うというほどでもないし
843: 2017/07/04(火)23:02 ID:olJiM2Cb(2/5) AAS
コストは置いておいたとしても寿命はどうするんだよ

平たく言うと
「マニュアル車の1速は、オートマ車のDと同じ意味ですか?」
って質問だぞ
それに対して
「オートマ車はDで発進するからマニュアル車なら1速と同等ととらえるのが筋
 速度が出た後のことなんかどうでもええ」
ってのはなんか違うだろ

メモリ管理に関してはC++はマニュアルでC#はオートなんだから
こういうたとえになるんだよ
844: 2017/07/04(火)23:10 ID:VgVQ93XC(1) AAS
>>837
おまいさん資格持ちじゃないよな?な?な?
845
(1): 2017/07/04(火)23:15 ID:olJiM2Cb(3/5) AAS
あと、C#はJavaと違って構造体が使えてこれは値型になれるから
スタックに確保できる
なんで、C++の A a; はどちらかというと、そちらに該当するんだよ

で、C#のA a = new A(); はというと
delete が必要という一点を除けば C++ の A *a = new A();に相当するんだよ
こんなこと当たり前だろ
846: 2017/07/04(火)23:23 ID:9HpxJyun(1) AAS
>>845
実装と目的を一緒にすんなよタコ
単に「Aのインスタンス生成するコード書いてみ」
といわれたら>>823になるだろjk
意味が同じってのはそういうこった
847: 2017/07/04(火)23:33 ID:AVhuZxl1(1/4) AAS
>>842
えっ???
そんな馬鹿な
848: 2017/07/04(火)23:38 ID:olJiM2Cb(4/5) AAS
>単に「Aのインスタンス生成するコード書いてみ」

ってのはお前が勝手に言ってることだろ

元は
>このc++の「A a;」は、c#の「A a = new A();」と同じ意味ということでいいんですか?

849
(1): 2017/07/04(火)23:38 ID:AKPIjSm8(1) AAS
超えられないかはともかく、newに限って言えばGC言語の方が低コストでもおかしくない。
850
(1): 2017/07/04(火)23:39 ID:kiqPrlXB(3/3) AAS
厳密にどうかじゃないんだよ
初心者がこれから言語を勉強していくのに
より得になる方はどっちだってことよ

GCだからー、ヒープだからーって
そんな答えおよびじゃないっつーの
851: 2017/07/04(火)23:40 ID:AVhuZxl1(2/4) AAS
実際に試してから言えよ
852: 2017/07/04(火)23:40 ID:AVhuZxl1(3/4) AAS
>>842
>>849
853: 2017/07/04(火)23:43 ID:olJiM2Cb(5/5) AAS
どの程度の初心者かわからないだろ
C#と比べてるってことは既にC#をそこそこマスターしているかもしれないだろ
その状態でC++に手を出そうとしていたとしたら、どうだ?
C#とC++の違いなどを書いたほうが良いだろ
1-
あと 149 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s