[過去ログ]
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1478440682/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
4: デフォルトの名無しさん [sage] 2016/11/07(月) 09:27:53.95 ID:vooGYje+ 前スレ>>999再掲 class A{ int a[2]; A(int b[]) :a(b) //error {} }; この:a(b)ってなにか書き方ありますか? 前スレ>>1000 無理でした・・・ http://mevius.5ch.net/test/read.cgi/tech/1478440682/4
16: デフォルトの名無しさん [sage] 2016/11/07(月) 19:07:23.45 ID:hOJqMng1 要求は固定長の配列であって、動的に増やせるようにしろとは言ってないので それのコードは非効率にしかならないと思うよ http://mevius.5ch.net/test/read.cgi/tech/1478440682/16
34: デフォルトの名無しさん [sage] 2016/11/10(木) 10:52:07.29 ID:8ULjF/bN 独習C第4版 P197ページの再帰のプログラムなのですが、 #include <stdio.h> void recurse(int i); int main(void) { recurse(0); return 0; } void recurse(int i) { if(i < 10) { recurse(i + 1); printf("%d " , i); } } 実行結果は 9 8 7 6 5 4 3 2 1 0 の動作がわかりません。10になるまでprintfが実行されずに+1され続けるのはいいのですが、 なぜ10になったらiが戻り始めるのでしょうか? あまりに初心者な質問ですみません。 http://mevius.5ch.net/test/read.cgi/tech/1478440682/34
43: 40 [sage] 2016/11/10(木) 14:01:09.75 ID:8ULjF/bN >>41 >再帰呼び出し後に書く recurse(i+1); printf("%d ", i); >と >書いてから再帰呼び出し printf("%d ", i); recurse(i+1); >の違いとか これはこの本の次のページにも書いてありました。 書いてから再帰呼び出しの場合は昇順(1,2,3,4,5,6~)になりますね。 相変わらず曖昧な理解なんですが、 どのiの場合もi=10に達するまではrecurse(i+9)までしか実行されていなくて、 printfは実行されていない待機中の状態だと考えればいいのでしょうか? それでi=10でif条件文を抜けて、i=9からi=0まで数字が大きい方から順番にまだ実行していなかった printfを降順で実行していくのでしょうか? この本(独習C)には > 引数の値が10に達すると、recurse()の再帰呼び出しから戻りはじめます。関数は、呼び出し元に戻る >ものなので、recurse()は直前の呼び出し元に戻り、そこでprinf()を文を実行して「9」と表示し、 >さらに前の呼び出し元に戻ります。こうしてrecurse()は、今度は「8」と表示します。 その後も同じ>プロセスが繰り返され、すべての呼び出しから戻った段階でプログラムが終了します。 実行される順番が、最初のi=0からではなく、直近のi=9からなのはなぜなのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1478440682/43
133: デフォルトの名無しさん [sage] 2016/12/31(土) 16:11:48.53 ID:8v6iajLL ある本の解答例ですが実行すると先頭文字が消えます。これではダメなんでしょうか? void str_toupper(char *str) { while (*str) *str++ = toupper(*str); } http://mevius.5ch.net/test/read.cgi/tech/1478440682/133
147: デフォルトの名無しさん [sage] 2017/01/04(水) 01:18:25.55 ID:frbRBuKj 副作用完了点が2つ以上あると鼻から悪魔 http://mevius.5ch.net/test/read.cgi/tech/1478440682/147
157: デフォルトの名無しさん [sage] 2017/01/04(水) 12:32:23.72 ID:xue+qv3N 「んなこたーない」 っていつも書き込みする人がいるけど もっと具体的な回答してほしい。 「んなこたーない」って答えるくらいだから何かしらの反論や回答持ってるんだろうけど もっと具体的に言ってくれなきゃ分からない。 http://mevius.5ch.net/test/read.cgi/tech/1478440682/157
281: デフォルトの名無しさん [sage] 2017/01/29(日) 14:28:58.62 ID:XKehhdE4 質問です。 VisualStudio2015でReleaseビルドをしていたところ、生成されたEXEに気になる点がありました if(false){ printf("hogehoge"); } という処理を書いたところ、このprintfは到達不可能なのに、EXEの中に"hogehoge"という文字列が含まれていたのです。 ※再現コードなのでhogehoeをprintしてなんの意味があるのかというコードですが 到達不能なのが明らかな部分は最適化で削除されるものだと思っていたのですが、何かしらの私の不手際でしょうか? 最適化は /O2オプションです http://mevius.5ch.net/test/read.cgi/tech/1478440682/281
334: デフォルトの名無しさん [sage] 2017/02/04(土) 21:25:32.55 ID:uqEM2LY/ int a = 0; int *b = &(1+a); これが出来ないのはなぜですか? 1+aの計算結果というのはメモリ上のどこかにあると思うんですが http://mevius.5ch.net/test/read.cgi/tech/1478440682/334
529: デフォルトの名無しさん [sage] 2017/03/30(木) 20:11:34.52 ID:irpIFLVN >>528 おまえは質問の意図を理解しよう >>525 そのsetgetでいいんじゃない?ただそのgetは俺だったらreferにするな ついでにsetget両方使えるようにdata* operator->()みたいなの実装かな。というかむしろそっちでアクセスする方向にするな あとはattachdetach作っておいてm_dataを置換できるにようにしちゃうな その手のスマートポインタは至るとこで使われてるからこんなとこで聞かずにどっかのライブラリの参考にしたら? メンバのコピーはpragma pack1でstructしておいてmemcpy http://mevius.5ch.net/test/read.cgi/tech/1478440682/529
653: デフォルトの名無しさん [sage] 2017/05/23(火) 09:20:18.86 ID:J4YcG+3k >>651 はい 規格上もデストラクタがvirtualでないBのオブジェクトをA*に入れてdeleteした場合未定義動作だよ http://mevius.5ch.net/test/read.cgi/tech/1478440682/653
743: デフォルトの名無しさん [] 2017/06/24(土) 15:16:01.77 ID:qquEaJ2M >>741 コピーしようがしまいが結果は一緒でしょ? 単に最適化の結果で余計な処理が動かないだけと考えればいい http://mevius.5ch.net/test/read.cgi/tech/1478440682/743
744: デフォルトの名無しさん [sage] 2017/06/24(土) 18:10:28.98 ID:Ipep7Yd5 >>743 一緒じゃねーよヴァカ乙 リソースはメモリだけと思ってんの?どんだけお花畑なの? mutex a = {};コピー無しの保証 http://mevius.5ch.net/test/read.cgi/tech/1478440682/744
765: デフォルトの名無しさん [sage] 2017/07/02(日) 10:29:07.80 ID:TVPISEnD 質問です doubleの計算誤差ってちゃんと考慮必要でしょうか? 数桁の四則演算なら誤差なしと考えていいですか? http://mevius.5ch.net/test/read.cgi/tech/1478440682/765
792: デフォルトの名無しさん [sage] 2017/07/02(日) 22:54:19.38 ID:ynDhLM7Z 情報処理資格に受かっていない人が、C/C++ をプログラミングするなど、10年早い C/C++ は、直接デバイスを扱うから、自作パソコンを作れるぐらいに、 かなりパソコン内部の装置の仕組みを、知っていないと無理 さらに組み込みなら、高度情報処理のエンベッド資格も必要 http://mevius.5ch.net/test/read.cgi/tech/1478440682/792
880: デフォルトの名無しさん [] 2017/07/09(日) 16:06:32.28 ID:EeQkMvgZ ポインタそのものにオブジェクトってできるんでしょうか? 例えば、配列arrayのアドレスをポインタpで、ポインタpのアドレスをポインタpのポインタppで調べたんですが、 int array[3]; int *p = array; int **pp = &p; for(i = 0; i < 3; i++) { printf("&array[%d] : %d : %d\n", i, &array[i]); } &array[0] : 2293472 &array[1] : 2293476 &array[2] : 2293480 &p[0] : 2293472 &p[1] : 2293476 &p[2] : 2293480 &pp[0] : 2293468 &pp[1] : 2293472 &pp[2] : 2293476 ppが参照しているpのオブジェクトの位置が、arrayのオブジェクトのアドレスと全く同じ位置にあります。 1つのアドレスが2つのオブジェクトをもてるのか、ポインタ自体にオブジェクトは生成されないのか 他の要素でそうなってるのかわかりません。どなたか回答宜しくお願いいたします。 http://mevius.5ch.net/test/read.cgi/tech/1478440682/880
894: 名無しさん@そうだ選挙に行こう! Go to vote! [sage] 2017/07/10(月) 07:04:04.53 ID:Ols/UzwR 配列ならば確保した数+1までのアドレス計算はやっても大丈夫&整合がとれる位置に配置されている http://mevius.5ch.net/test/read.cgi/tech/1478440682/894
947: デフォルトの名無しさん [sage] 2017/07/14(金) 20:20:31.05 ID:8ghhANnS えっ mainのreturnでint値返すのはexitをその返り値で呼ぶのと全く等価でしょ? 少なくとも現行のC,C++規格では等価と書いてあるけど現実の実装ではそうなってないってこと? http://mevius.5ch.net/test/read.cgi/tech/1478440682/947
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.280s*