[過去ログ] 【初心者歓迎】C/C++室 Ver.103【環境依存OK】 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): 2018/07/01(日)03:44 ID:4MMF8cDN(1) AAS
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
外部リンク:codepad.org
外部リンク:ideone.com

前スレ
省2
2: 2018/07/01(日)05:02 ID:FOGWQSv4(1) AAS
こんばんは。質問です。
Win32APIで現在OSが再生中の音声の値を取得する方法を教えてください。
その瞬間の値をLR各1個取れればいいですが、ある程度連続的に配列に取り込めるほうがベターです。
スペクトラムアナライザを作ろうと思います。
Windows10/Visual Studio 2017/ C or C++です。
3
(1): 2018/07/01(日)18:40 ID:pYjHbPeQ(1) AAS
sqrt(2.0);
sqrt((double)2);

後者の俺はおかしいですか
4
(2): 2018/07/01(日)21:50 ID:mDZv4OK3(1) AAS
うん
それ以前に定数にsqrt()なんて使う時点で
5: 2018/07/01(日)21:54 ID:Z8xp56Jv(1) AAS
もしかして、実行時刻や国によって計算結果が異なるのかも知れない
あるいは、希に発生する宇宙線の影響を検出したいという意図が有るのかもしれない
あるいは実行環境のバグを検出しその後の処理を切り替えたいとか
6
(1): 2018/07/01(日)23:13 ID:/Pcja9c+(1) AAS
正確に√2とか√3を定数で持つにはどうしたらいい?
7
(2): 2018/07/01(日)23:32 ID:lS5AQxvk(1) AAS
>>6
そもそも浮動小数点数で無理数を正確に表すこと自体が不可能だけど、どこまでの精度を求めてるの?
8: 2018/07/02(月)00:05 ID:Y9X1m4Hz(1) AAS
有理数を使えば良いじゃね?
9: 2018/07/02(月)00:31 ID:TNHgdEjE(1) AAS
>>7
sqrt呼ぶのと同精度でいいよ
10: 2018/07/02(月)01:18 ID:3LeesGvV(1) AAS
√2と√2をかけ合わせたらちょうど2を返す無理数クラスなら作れそう
すでにありそう
素因数分解が必要そうだから結構面倒になるかな?
11: 2018/07/02(月)07:01 ID:tvgYkj/r(1) AAS
無理数というか、冪の底と指数をそれぞれ有理数で持つ、
という形式ならいけそうだな。

有理数クラスの約分に相当する処理を自動的にやらせる感じ。
12: 2018/07/02(月)09:17 ID:yNy9eqPr(1) AAS
>>4
>>7
3じゃないけど、定数でsqrt呼ぶのがだめというだら、代案を示してほしい。
13
(1): 2018/07/02(月)20:49 ID:T8iPgZJX(1) AAS
#define SQRT2 1.414213...(必要な桁)
で充分だよ
14: 2018/07/02(月)22:00 ID:ZEcRd/bU(1) AAS
そこはせめて
static const double SQRT2 = 1.414213...(必要な桁)
にしようよ…
15: 2018/07/04(水)21:59 ID:gFgZc5FG(1) AAS
18Z
16
(1): 2018/07/05(木)12:54 ID:u9CJaon8(1) AAS
vcのcl.exeでc書いてるんだが、20億バイトのmallocがnull返します。
何とかなりませんか?
17: 2018/07/05(木)13:05 ID:I27lRIcu(1) AAS
>>16
64bitでコンパイルされたし
18: はちみつ餃子 ◆8X2XSCHEME 2018/07/05(木)14:58 ID:l9X7uzb+(1/2) AAS
実メモリが載ってなきゃ意味ないぽよ。 とマジレス。
まあ今どきはそういうデスクトップマシンも無くはないけど……。
19: 2018/07/05(木)15:06 ID:ppxwAApK(1) AAS
(vc ってあるから Windows 前提で)
malloc のアロケーターの実装とセットになって
OS がよきに計らってくれないものなのかな
20: 2018/07/05(木)15:43 ID:I5nj7cYg(1/2) AAS
20億バイトって約2GB、31bitで表せる範囲ではあるのか。
プロセスあたりメモリ2GBの制限に引っかかってるのかな。
この20億バイトのmallocの他にもメモリを使っててトータル不足とか。

プロセスで使えるメモリを3GBにする設定とかあるんだっけ。
あとはOSを64bitにするか。
21: はちみつ餃子 ◆8X2XSCHEME 2018/07/05(木)18:08 ID:l9X7uzb+(2/2) AAS
あ、 20 億ってたったの 2GB か。
でもまあメモリ空間が足りないとどうしようもないよな。
22: 2018/07/05(木)18:41 ID:HIMx+eV5(1) AAS
そらプロセス起動してんだから
mallocでプラス2GBとか普通は32bitじゃ無理
23: 2018/07/05(木)19:23 ID:I5nj7cYg(2/2) AAS
実際にやったわけじゃないけど、軽く調べたところ、
32bitのWindows上のプロセスで2GBより大きなメモリを使うためには…
・OSの動作モードを「カーネルで1GB, プロセスで3GB」のメモリ配分に変更
・リンク時にオプション /LARGEADDRESSAWARE を指定
…という具合に、動作環境と実行ファイルの両方での対処が必要みたい。

さらに加えると、Win32APIの HeapAlloc() を使わないとダメかも。
これはライブラリの malloc() がどう実装されてるかによるが。
24
(1): 2018/07/05(木)21:08 ID:IGtLSuPP(1) AAS
64bitでコンパイルしたらいけますた。
25: 2018/07/06(金)18:04 ID:zA1tf/7d(1) AAS
>>24
それは良かったでちゅね
良いこ良いこ
26
(1): 2018/07/06(金)18:42 AAS
for( a : コンテナ)ってしたときのアクセスは内部的にどうなってるんですか?
?コンテナのat(size_t)を呼び出している
?コンテナにイテレータがあればイテレータ
?コンテナにイテレータがなくat(size_t)があればat
27: 2018/07/06(金)19:28 ID:cmD7yKAf(1/2) AAS
生配列の場合は*<配列のポインタ>、
コンテナ.begin()が定義されていれば*<コンテナ.begin()が返却するもの>、
そうでなければ*<std::begin(コンテナ)が返却するもの>
で要素アクセスする。

at()はオーバーヘッドがあるので、forに限らず、将来的にもコンパイラが知らぬうちに呼びだすことはないと思うよ。
28
(1): 2018/07/06(金)19:39 AAS
atしかなかった場合は!?
29: 2018/07/06(金)20:28 ID:cmD7yKAf(2/2) AAS
コンパイルしてみろ。答えは3秒で分かる。
30
(1): はちみつ餃子 ◆8X2XSCHEME 2018/07/06(金)21:43 ID:G+eTHi8Q(1) AAS
>>26
begin 関数と end 関数で帰ってくるイテレータで繰り返すようになってる。
標準ライブラリにあるコンテナの場合は std::begin と std::end が適用されて、
これは基本的にはそれぞれのコンテナのメンバ関数 begin と end をそのまま呼び出すが、
配列などのために特殊化した版が用意されている。

自分が独自に作ったコンテナを range based for に対応させたい場合は、
メンバ関数として begin と end を持っておけば std::begin と std::end 経由でそれが呼び出されるし、
省8
31: 2018/07/06(金)22:06 AAS
>>30
詳しい情報サンクス
32: 2018/07/06(金)23:15 ID:4kvIcx8n(1) AAS
>>28
あっと驚く
33: 2018/07/07(土)14:03 ID:0Eyv8LqD(1/2) AAS
ストラウストラップのプログラミング言語C++を読んでいるのですが、

auto を使えとか、

int a = 1;

よりも

int a {1};
省2
34
(1): 2018/07/07(土)14:47 ID:cKmJS2is(1) AAS
いいよ。問題ない。
c++11以降はそっちが推奨。

ただ会社で使うと周りがついてこれないから直せと言われるかもしれない。
35: 2018/07/07(土)14:59 ID:0Eyv8LqD(2/2) AAS
>>34
ありがとうございました。
36: 2018/07/07(土)15:18 ID:kLxolQc6(1) AAS
ITドカタになりたいなら
現場のコーディング規約に従いなさい

ドカタになりたいのにドカタのオキテに従わないのよくない
ドカタにしばかれるぞ
37: 2018/07/07(土)17:06 ID:n3/QBjsU(1) AAS
土方になりたいやつはJSやれ
38
(1): 2018/07/07(土)18:24 ID:ZyYEp/bp(1/3) AAS
整数の宣言時の初期化はどう書くのがオヌヌメなん?
int a = 100;
int b(200);
int c{300};
俺は昔はaで統一してて最近はbに統一してるけど、なんとなく
39
(2): 2018/07/07(土)19:03 AAS
三行目から初期化という強い意志を感じる
40
(1): 2018/07/07(土)19:16 ID:jTEKSr/V(1) AAS
>>38
『プログラミング言語C++』第4版ではc{300}の書き方をオヌヌメしてる。
(p.168 6.3.5 初期化)

C++11以降でないと使えないのが欠点だって。
41: 2018/07/07(土)20:05 ID:ZyYEp/bp(2/3) AAS
>>39
とんくすこ
勉強になりました
42: 2018/07/07(土)20:06 ID:ZyYEp/bp(3/3) AAS
×>>39
>>39-40
43: 2018/07/08(日)05:39 ID:eeyKvEjW(1) AAS
てす
44
(2): 2018/07/13(金)19:58 ID:Tk69mgcl(1/2) AAS
ASCIIコードのエスケープ文字列を変換してくれる標準関数ってなかったっけ?
2文字の "\n" を 1文字の 0x0a に変換してくれるような
45: 2018/07/13(金)20:32 ID:xmTV0Hfm(1) AAS
寝言は寝てから言え
46
(1): はちみつ餃子 ◆8X2XSCHEME 2018/07/13(金)20:46 ID:dep+wTpc(1) AAS
>>44
無い。
47
(1): 2018/07/13(金)22:01 ID:gLGTmgps(1) AAS
\nは1文字だぞ、と何故教えてやらないのか
48: 2018/07/13(金)22:11 ID:Da3sJv8m(1/2) AAS
ソース中の \n はプリプロセッサが変換してくれるけど
標準入力とかの外部入力から \ n (0x5c 0x6e) を渡して
それが 0x0d になって欲しいんじゃないの?
49: 2018/07/13(金)22:16 ID:Tk69mgcl(2/2) AAS
>>47 コマンドラインから "\n" て与えるとコード上の "\\n" 相当になる
わかりにくくてすまん

>>46 やっぱ無いのか。サンクス
50: 2018/07/13(金)22:18 ID:7IjJ2GkE(1/2) AAS
>>44
sprintfに渡したらいかんのか?
51: 2018/07/13(金)22:20 ID:Da3sJv8m(2/2) AAS
あうち 0x0a だった

いずれにしろ標準関数にはないね
52: 2018/07/13(金)22:20 ID:7IjJ2GkE(2/2) AAS
ごめん、その変換はコンパイラの仕事か。
53
(1): 2018/07/20(金)11:04 ID:o8SFlR7J(1/2) AAS
ロベールの本を読んでいます。
メンバ関数ポインタについて質問です。

int (*Calculator::mfp)();
int (Calculator::*mfp)();

のどちらが正しいかという話が書いてあります。


あとは「どこに」つけ足すかですが、これは簡単に考えると2種類考えられます。
省15
54: 2018/07/20(金)11:05 ID:o8SFlR7J(2/2) AAS
何が言いたいのか分かりません。
55: 2018/07/20(金)13:06 ID:JusE3miR(1) AAS
質問は何?
56: 2018/07/20(金)13:09 ID:IRIYugXE(1) AAS
メンバ関数ポインタの*つける場所、みんな迷っちゃうよね?ね?
でも心配しなくていいよ!

だって先頭に*付けたらstaticなメンバ関数ポインタの実体定義とグローバル変数として定義したメンバ関数ポインタが区別つかなくなっちゃうじゃん?
だからどこに付けるか分からなくなっても推測できるから安心だよ!ラッキー!

ってことじゃね?
(俺はググるけど)
57: 2018/07/20(金)15:13 ID:E9KpD2Uv(1) AAS
型名 (*{名前}opt)(引数) と来たら関数ポインタ
型名 (クラス名::*{名前}opt) と来たらメンバ関数ポインタと
馬鹿の一つ覚えで認識しているのでこれ以上ややこしくされると困るわ
58: 2018/07/20(金)16:22 ID:bI1d2ZJ+(1) AAS
(this の渡り方とか不安で メンバ関数のポインタは使わずに
 this を引数にする普通の関数のポインタを使っちゃう)
59
(3): ◆QZaw55cn4c 2018/07/21(土)00:44 ID:w9jgnsOk(1/2) AAS
>>53
>int (*Calculator::mfp)();
これは、mfp は普通の関数(static メンバ関数=メソッド)のポインタ、int (*f)() と同じもの

>int (Calculator::*mfp)();
::*
->*
という演算子が別途存在する、と覚えておく
省4
60: ◆QZaw55cn4c 2018/07/21(土)02:16 ID:w9jgnsOk(2/2) AAS
>>59
訂正します
「=メソッド」は削除してください、これは間違いですね
static メンバ関数は、this を必要としない(普通の)関数
::*, ->* は「インスタンスメソッド」に使います
61: 2018/07/21(土)06:53 ID:d0oYLoM2(1) AAS
>>59
実際別の演算子だし
使いどころも少ないので
どちらか迷うなんてことは今まで考えたこともないんだけど

ロベールさんは迷う事がよくあるってことなのかな?
62: 2018/07/21(土)13:29 ID:Peen6N8v(1/4) AAS
コンピュータの基礎的なことを勉強するのに、
以下の本から読むというのはどうでしょうか?

その後、コンピュータアーキテクチャの本や
OSやコンパイラの本を読むというプランは
どうでしょうか?

低レベルプログラミング
Igor Zhirkov
省1
63
(1): 2018/07/21(土)13:42 ID:4IUwGiL2(1) AAS
どうせなら、FPGAでCPUから作るところからすれば良いぞ
64
(1): 2018/07/21(土)16:21 ID:WquU7epQ(1) AAS
>>59
頭悪いんだから偉そうに書くなやwww
65: 2018/07/21(土)20:22 ID:Peen6N8v(2/4) AAS
ロベールの本って細かいことが書いてありますが、それらは本当に重要なんですか?

柴田望洋訳のC++とどっちがいいですか?
66: 2018/07/21(土)20:23 ID:Peen6N8v(3/4) AAS
>>63
工作など面倒なことはしたくないです。
67: ◆QZaw55cn4c 2018/07/21(土)21:24 ID:vWALYQin(1) AAS
>>64
C/C++ スレを粘着の侵略から守るため、必死で闘った。
しかしそれが正義などではなく、太古の昔から繰り返されてきた煽りあいの歴史をなぞっているだけである事もよく知っていた。
哀しかったよ。いや、馬鹿になった事がじゃない。C/C++ を勉強した事がだ。C/C++ は破産するまで終わらないゲームなのだ。
たぶん間抜けな猿が始めたに違いない。
fj へ戻れだと?道は一本きりではないか。
大切なのは自分の立場を見つけることだ。そこで何を煽るべきか何を煽るべきでないかを考える。
省2
68: 2018/07/21(土)21:42 ID:Peen6N8v(4/4) AAS
ロベールの本を見ていると、C++って色々と文法面で無理をしているなと思います。
69
(1): 2018/07/23(月)04:06 ID:4YnpLRT9(1/5) AAS
C++の初心者スレってここであってますか。
改行に使うのって <<endl;で覚えて問題ないですか?
以前入門書を買ってその時は読んでる本が難しすぎて勉強自体やめてしまったんですが
先程ロベールの入門書を買ってきて始めたんですが、以前読んだ本には\nと書いてあった気がします。(うろ覚え)
どっち使っても変わらないですか
70: 2018/07/23(月)07:12 ID:E4iT+hCc(1) AAS
そんなの理解出来ないなら、ローベルの入門書なんて捨てろ
71
(1): 2018/07/23(月)07:34 ID:4YnpLRT9(2/5) AAS
\nとendlの違いは今読んでる範囲では全く説明されてないんですが。
他にC++初心者スレあったら誘導お願いします><
72: 2018/07/23(月)08:26 ID:zCHmFbX3(1) AAS
>>71

ロベールの本で "\n" と std::endl の違いは説明されています。
73: 2018/07/23(月)18:40 ID:4YnpLRT9(3/5) AAS
ほんとですか?
今読んでる限りでは特に説明がないような・・・
始めたばかりなので当然最後まで読んではいませんが後のほうのページで説明されてるんですかね
74
(1): 2018/07/23(月)21:38 ID:s5U2uI/C(1) AAS
>>69
\nは文字としての改行コード
endlは改行込みで且つバッファを即空になるまで書き出す命令

イメージとしては\nを読み込んだ時に呼び出される改行処理を直で呼び、且つflushも呼び出します

\nだけではflushが起こらずただバッファに\nという1バイトが入るだけ

何が違うのだろうか? それはいきなりアプリが落ちた時に判る
まだ書き出ししてないバッファの内容は消失する
省3
75: 2018/07/23(月)21:47 ID:lGjeX4lH(1) AAS
1バイトじゃない場合もあるで
76: 2018/07/23(月)22:01 ID:4YnpLRT9(4/5) AAS
>>74
詳しくありがとうございます
今の段階ではなんのこっちゃ分からないですが…どちらで覚えても問題はないですかね
77: はちみつ餃子 ◆8X2XSCHEME 2018/07/23(月)22:16 ID:XO7jU5IV(1) AAS
せっかく違いを説明してくれてるのにその結論なのか……。
78
(2): 2018/07/23(月)22:27 ID:4YnpLRT9(5/5) AAS
いや・・・他の言語経験あるとかならともかく始めたばっかなもので^^;
アプリ作成経験なんて当然皆無ですしバッファの意味も分かりません…
だから今の段階で疑問に持つようなとこじゃないのかなと
79: 2018/07/23(月)22:31 ID:4wFiAGCh(1) AAS
「問題無いですかね?」に対しては「いいえ」としか言いようがない
色々問題はあるだろうけど理解出来ないところが先ず問題だな
80: 2018/07/24(火)03:02 ID:iDyZGWpA(1) AAS
こんなところで聞くより自分で調べた方がいいよ
81
(1): はちみつ餃子 ◆8X2XSCHEME 2018/07/24(火)03:37 ID:2E8lmfNH(1/2) AAS
>>78
でも疑問を持ったから質問したんだろ?

違いの内容を (今は) 理解できなかったっていうのは仕方ないかもしれんが、
違いの説明をしてるのにそれを無視する結論では回答者を馬鹿にしていると取られても仕方ないぞ。

わからなかったのがバッファについてなら、それをキーワードにしてググればいくらでも解説が出てくるし、
それもよくわからなかったのなら「参考にして本を読み進めてみます」くらいの言葉で締めとけよ。
1-
あと 921 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s