C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part145
http://mevius.5ch.net/test/read.cgi/tech/1568362404/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
探検
C++相談室 part146
■ このスレッドは過去ログ倉庫に格納されています
2019/11/07(木) 11:35:36.76ID:4wggfTwe
283デフォルトの名無しさん
2019/11/26(火) 23:24:07.48ID:sE/nea3J a=1+q の時:
y/a=y/(1+q)
=y*{1 - q + q^2 - q^3 + ... }
=y*(1-q*(1-q*(1-q...))}
y/a=y/(1+q)
=y*{1 - q + q^2 - q^3 + ... }
=y*(1-q*(1-q*(1-q...))}
284デフォルトの名無しさん
2019/11/26(火) 23:30:51.74ID:sE/nea3J >>283
この式は、|q|<1の場合にだけ正しいので、
aをa=u*2^n (u = 1.0 + q)の形式に直してから
1/a = 1/(u*2^n)=1/(1+q)*2^(-n)
= (1-q*(1-q*(1-q...)))*2^(-n)
とするのですかね。
なるほど、qの精度を考えれば、乗算の回数は2個くらいまで
で済みそうですね。
この式は、|q|<1の場合にだけ正しいので、
aをa=u*2^n (u = 1.0 + q)の形式に直してから
1/a = 1/(u*2^n)=1/(1+q)*2^(-n)
= (1-q*(1-q*(1-q...)))*2^(-n)
とするのですかね。
なるほど、qの精度を考えれば、乗算の回数は2個くらいまで
で済みそうですね。
285デフォルトの名無しさん
2019/11/26(火) 23:36:41.80ID:sE/nea3J >>284
すみません、これだと二回では精度が足りなさそうですね。
すみません、これだと二回では精度が足りなさそうですね。
286デフォルトの名無しさん
2019/11/26(火) 23:37:21.85ID:78UVTJ0X287デフォルトの名無しさん
2019/11/26(火) 23:49:53.60ID:sE/nea3J >>286
多倍長の 1/a はどうやって求めたら効率が良いのでしょうか?
多倍長の 1/a はどうやって求めたら効率が良いのでしょうか?
288デフォルトの名無しさん
2019/11/26(火) 23:53:50.60ID:78UVTJ0X289デフォルトの名無しさん
2019/11/27(水) 00:00:48.09ID:T7KqQ5kC290デフォルトの名無しさん
2019/11/27(水) 00:02:25.36ID:T7KqQ5kC >>289
すみません、違いますね。
すみません、違いますね。
291デフォルトの名無しさん
2019/11/27(水) 00:27:57.72ID:tKRTExPe 初歩的な質問ですみません
2つのdouble型実数xとyを引数とし、x/yとy/xの大きい方を返却する関数を作成せよ。xあるいはyのときは0を返却するとする。という問題でコード書いてみたんですがうまくいきません どこが間違っているのでしょうか
#include<stdio.h>
double func(double,double); /*プロトタイプ宣言*/
int main(void)
{
double a,b;
printf("実数をスペースで区切って入力してください\n");
scanf("%d %d",&a,&b);
printf("%d",func(a,b)); /*呼び出し*/
return 0;
}
double func(double x,double y)
{
if(x/y > y/x) return x/y;
if(y/x > x/y) return y/x;
if(x==0) return 0;
if(y==0) return 0;
}
2つのdouble型実数xとyを引数とし、x/yとy/xの大きい方を返却する関数を作成せよ。xあるいはyのときは0を返却するとする。という問題でコード書いてみたんですがうまくいきません どこが間違っているのでしょうか
#include<stdio.h>
double func(double,double); /*プロトタイプ宣言*/
int main(void)
{
double a,b;
printf("実数をスペースで区切って入力してください\n");
scanf("%d %d",&a,&b);
printf("%d",func(a,b)); /*呼び出し*/
return 0;
}
double func(double x,double y)
{
if(x/y > y/x) return x/y;
if(y/x > x/y) return y/x;
if(x==0) return 0;
if(y==0) return 0;
}
292デフォルトの名無しさん
2019/11/27(水) 00:33:48.17ID:ynQDuheL %dのところがおかしい
それは整数用
それは整数用
293デフォルトの名無しさん
2019/11/27(水) 00:42:47.79ID:tKRTExPe ありがとうございます 1時間くらい悩んでたのが馬鹿みたいだ
294デフォルトの名無しさん
2019/11/27(水) 00:53:21.44ID:ynQDuheL 入力に0を含めてテストするように
295デフォルトの名無しさん
2019/11/27(水) 01:11:14.78ID:tKRTExPe ifの順番変えたら完成しました
296デフォルトの名無しさん
2019/11/27(水) 02:13:53.15ID:XGkmLsxS QZは馬鹿
297デフォルトの名無しさん
2019/11/27(水) 02:41:24.38ID:Q9FMbuzn xとyが等しいケースは書いたんじゃろうか
298デフォルトの名無しさん
2019/11/27(水) 11:43:48.59ID:g3LmaZYt 世にある仕事の数でいうと
java:C#:C++が5:3:1くらいだな。
java:C#:C++が5:3:1くらいだな。
299デフォルトの名無しさん
2019/11/27(水) 12:16:41.56ID:zdI/1sLa このスレ過疎かと思ったら話題でた途端に加速するな
300デフォルトの名無しさん
2019/11/27(水) 13:47:03.06ID:KtqS+hCI const は要らない子
301デフォルトの名無しさん
2019/11/27(水) 14:58:41.90ID:vSkP4LPU 本当はね・・・constの逆が欲しいのさ
デフォが書き込み禁止で許可を明示だったらと
キャプチャのmutableみたいな
デフォが書き込み禁止で許可を明示だったらと
キャプチャのmutableみたいな
302デフォルトの名無しさん
2019/11/27(水) 15:05:41.36ID:Yu9S3/3Y めんどくさいだけ
303デフォルトの名無しさん
2019/11/27(水) 15:08:54.83ID:lAIqGT0K Pointという点を表すクラスがあって、2点間の距離を取得する関数を追加したいのですが、
double Point::GetDistance(const Point &p) const
にすべきか、ただのCの関数で
double GetDistance(const Point &p1, const Point &p2)
にしたほうがいいのか迷っています。
設計的にいいのはどっちなんでしょうか?
double Point::GetDistance(const Point &p) const
にすべきか、ただのCの関数で
double GetDistance(const Point &p1, const Point &p2)
にしたほうがいいのか迷っています。
設計的にいいのはどっちなんでしょうか?
304デフォルトの名無しさん
2019/11/27(水) 15:13:19.55ID:zdI/1sLa305デフォルトの名無しさん
2019/11/27(水) 15:32:27.13ID:FMRbYBnJ 下に1票。同じ理由
306デフォルトの名無しさん
2019/11/27(水) 15:33:34.15ID:vYtjQlD0 下だな
なんでもかんでもインスタンスに生やすのは厨臭くてダサいし、対称な操作は対象に見えるべき
なんでもかんでもインスタンスに生やすのは厨臭くてダサいし、対称な操作は対象に見えるべき
307デフォルトの名無しさん
2019/11/27(水) 15:34:48.68ID:lAIqGT0K308デフォルトの名無しさん
2019/11/27(水) 15:43:43.07ID:PahKH909 下の方が、スカラー値等の既存型や配列向けの特殊化をし易いメリットもあるかもねー
309デフォルトの名無しさん
2019/11/27(水) 15:55:14.01ID:xImtWZAs ベクトルの引き算を定義してやるのはありでは
310デフォルトの名無しさん
2019/11/27(水) 16:11:06.28ID:KtqS+hCI311デフォルトの名無しさん
2019/11/27(水) 16:12:16.87ID:KtqS+hCI ああ同じではないわ
ベクトルの引き算はスカラーじゃなくてベクトル
ベクトルの絶対値を定義する
ベクトルの引き算はスカラーじゃなくてベクトル
ベクトルの絶対値を定義する
312デフォルトの名無しさん
2019/11/27(水) 16:29:07.34ID:MN5dlGGA abs(a-b)
313デフォルトの名無しさん
2019/11/27(水) 18:11:30.16ID:p98u22dC ベクトルの加減算や符号は紛れが無いのでオペレータで実装
乗算は内積、外積と要素ごとの積の3種類あるので
関数にする
3次元ベクトルも作る可能性があるなら
2次元ベクトルだとわかる名前にしておく
可能性が無いならそのままで
絶対値やノルム、象限などをグローバルにするかメンバ関数にするかは一長一短
設計ポリシー次第
乗算は内積、外積と要素ごとの積の3種類あるので
関数にする
3次元ベクトルも作る可能性があるなら
2次元ベクトルだとわかる名前にしておく
可能性が無いならそのままで
絶対値やノルム、象限などをグローバルにするかメンバ関数にするかは一長一短
設計ポリシー次第
315デフォルトの名無しさん
2019/11/27(水) 19:21:07.28ID:fyVQDs9d316デフォルトの名無しさん
2019/11/27(水) 19:29:28.78ID:vSkP4LPU317デフォルトの名無しさん
2019/11/27(水) 19:31:20.95ID:nSz8Pwyp318デフォルトの名無しさん
2019/11/27(水) 19:40:34.02ID:nSz8Pwyp RTOSを使うような小規模環境だと
ヒープをしなかったりアロケートのみにしたりする
そんな環境でもC++は便利なので使えるなら使いたい
ヒープをしなかったりアロケートのみにしたりする
そんな環境でもC++は便利なので使えるなら使いたい
319デフォルトの名無しさん
2019/11/27(水) 19:40:48.50ID:nSz8Pwyp ヒープを搭載しなかったり
320デフォルトの名無しさん
2019/11/27(水) 19:48:12.34ID:nSz8Pwyp OSレスでもC++が使えるなら使う
実際それで製品出した
実際それで製品出した
321デフォルトの名無しさん
2019/11/27(水) 19:52:22.88ID:q8B3tEUN 対称が大事なのって、交換法則が成り立つ計算だから?
322デフォルトの名無しさん
2019/11/27(水) 19:54:03.88ID:nSz8Pwyp 引き算の立場は?
323デフォルトの名無しさん
2019/11/27(水) 19:57:18.53ID:nSz8Pwyp 主役がはっきりしてる場合はメンバ
同等な重要度の時は非メンバ
私の場合はだいたいこんな感じ
同等な重要度の時は非メンバ
私の場合はだいたいこんな感じ
324デフォルトの名無しさん
2019/11/27(水) 19:58:30.31ID:nSz8Pwyp 対称かどうかはあまり関係ない
325デフォルトの名無しさん
2019/11/27(水) 20:25:32.56ID:vYtjQlD0 対称性が特に問題になるのはオペランドの型が異なるケースだな
対称な演算a.op(b)をaのクラスに実装したらbのクラスにも同じものをコピペするのか?
C#の演算子オーバーロードがstaticなのはそのへんが理由だとか
Pythonなどのスクリプト言語では基本的にインスタンスメソッドとして演算子を実装するけど、
それは動的型故に事前に実装を解決できないからだね
対称な演算a.op(b)をaのクラスに実装したらbのクラスにも同じものをコピペするのか?
C#の演算子オーバーロードがstaticなのはそのへんが理由だとか
Pythonなどのスクリプト言語では基本的にインスタンスメソッドとして演算子を実装するけど、
それは動的型故に事前に実装を解決できないからだね
326デフォルトの名無しさん
2019/11/27(水) 20:29:53.87ID:EGeQZX97 >>317
かつて非メンバ関数のオペレータを名前空間の外から呼び出そうとするととても残念な気持ちになるからじゃね
かつて非メンバ関数のオペレータを名前空間の外から呼び出そうとするととても残念な気持ちになるからじゃね
327デフォルトの名無しさん
2019/11/27(水) 20:44:42.44ID:0U9h+SK3 オペレータオーバーロードを使うとカッコイイ気分にひたれるからだろ
それ以外の理由なんてあるのか?
それ以外の理由なんてあるのか?
328デフォルトの名無しさん
2019/11/27(水) 20:45:44.57ID:E2H9effp private変数の書き換えを伴うものだけメンバだな
Pointが座標値しか持ってないようなのならコンストラクタ以外は持たせない
Pointが座標値しか持ってないようなのならコンストラクタ以外は持たせない
329デフォルトの名無しさん
2019/11/28(木) 01:38:08.55ID:PoPpbfsh 代入は普通メンバだろ
=
+=
-=
*=
/=
[ ]も
=
+=
-=
*=
/=
[ ]も
330デフォルトの名無しさん
2019/11/28(木) 01:44:12.13ID:PoPpbfsh 当然符号も
331はちみつ餃子 ◆8X2XSCHEME
2019/11/28(木) 02:14:28.33ID:+45JwpRI >>303
これは後者が良い場合が多い。
型変換の対称性が絡むんだよ。
たとえば std::tuple<double, double> から Point への変換コンストラクタが用意されているようなとき、
メンバ関数として実装されていると左辺ではこの型変換が考慮されず、右辺では考慮されるということになる。
これは後者が良い場合が多い。
型変換の対称性が絡むんだよ。
たとえば std::tuple<double, double> から Point への変換コンストラクタが用意されているようなとき、
メンバ関数として実装されていると左辺ではこの型変換が考慮されず、右辺では考慮されるということになる。
332デフォルトの名無しさん
2019/11/28(木) 02:50:39.48ID:4GnG2KNj >>329
代入系と添字はそもそもメンバとしてしか書けない
代入系と添字はそもそもメンバとしてしか書けない
333デフォルトの名無しさん
2019/11/28(木) 06:43:27.57ID:PoPpbfsh334デフォルトの名無しさん
2019/11/28(木) 08:02:30.92ID:A3g54Di2335デフォルトの名無しさん
2019/11/28(木) 08:09:05.07ID:YpOyjZW5336デフォルトの名無しさん
2019/11/28(木) 08:20:32.24ID:PoPpbfsh フラグメントが問題になるならアロケート専用で解放出来ないようにするとかそもそもアロケート出来ないようにするとか
固定サイズを頻繁になら独立させておけばフラグメントしない
固定サイズを頻繁になら独立させておけばフラグメントしない
337デフォルトの名無しさん
2019/11/28(木) 08:21:42.93ID:PoPpbfsh ヒープはヒープで1個の研究分野になるくらい
いろんな技術、方法がある
いろんな技術、方法がある
339デフォルトの名無しさん
2019/11/28(木) 18:11:40.54ID:PoPpbfsh341デフォルトの名無しさん
2019/11/28(木) 19:15:35.47ID:nxFPf5Ar begin()とend()があればRangeなんですか?
342デフォルトの名無しさん
2019/11/28(木) 23:41:46.98ID:iCLeSa8c だいたいそうよ
343デフォルトの名無しさん
2019/11/29(金) 04:19:50.28ID:KHTBF+uC そうですか。
どうもありがとうございます。
どうもありがとうございます。
344デフォルトの名無しさん
2019/11/29(金) 08:06:17.26ID:R3LtoROu 新明解C++買ったけどなにもしてない
345デフォルトの名無しさん
2019/11/29(金) 08:29:36.34ID:KHTBF+uC std::uint8_tってstd名前空間にあるけど、名前空間で修飾しなくても使えるのは何故ですか?
347デフォルトの名無しさん
2019/11/29(金) 09:06:38.46ID:KHTBF+uC >>346
自分でusingしてなくても大丈夫ですか?
自分でusingしてなくても大丈夫ですか?
348デフォルトの名無しさん
2019/11/29(金) 09:34:32.80ID:N/f9f1S7 a[i] = b;
みたいなのき
a に対して a.setitem(i, b); するのと
a.getitem(i) が参照を返す様にしておいて a.getitem(i) = b; するのと
どっちが正解?
みたいなのき
a に対して a.setitem(i, b); するのと
a.getitem(i) が参照を返す様にしておいて a.getitem(i) = b; するのと
どっちが正解?
349デフォルトの名無しさん
2019/11/29(金) 09:41:11.46ID:B0LTR+GE JavaのArrayListは a.get(i) = b; になってるので長いもんには巻かれろと思考停止で真似るだけ
350デフォルトの名無しさん
2019/11/29(金) 11:40:28.80ID:oVgX/GuB >>345
#include <cstdint>は
#include <stdint.h>
つまりCのライブラリだからだ
typedef unsigned char uint8_t;
#ifdef __cplusplus
namespace std {
using ::uint8_t;
}
#endif
こうなっているだけだ
#include <cstdint>は
#include <stdint.h>
つまりCのライブラリだからだ
typedef unsigned char uint8_t;
#ifdef __cplusplus
namespace std {
using ::uint8_t;
}
#endif
こうなっているだけだ
351デフォルトの名無しさん
2019/11/29(金) 11:53:00.94ID:Ml/gOmNO さすがに整数型にまでstdつけるのはうざい
なのでcのヘッダーを使ってる
なのでcのヘッダーを使ってる
352デフォルトの名無しさん
2019/11/29(金) 12:40:38.17ID:pYMGuCeV stdを省略する方がウザい
353デフォルトの名無しさん
2019/11/29(金) 12:45:20.21ID:gmGtMFq3 何の情報も増えないし紛れも何もない
意味の無い情報に5文字も余分に使いたくない
画面も入力の手間も
意味の無い情報に5文字も余分に使いたくない
画面も入力の手間も
354デフォルトの名無しさん
2019/11/29(金) 12:47:51.78ID:gmGtMFq3 int8_t がcharで、std::int8_t がsigned char とか?
それは御愁傷様
それは御愁傷様
355デフォルトの名無しさん
2019/11/29(金) 12:52:13.51ID:lef7gBlN STL使ってスタティックビルドしてるコンソールプログラムあるけど、
ファイルサイズ 400KBぐらいだな。圧縮した状態で200KB
これが20KBぐらいに減るのかー、でも誰も喜ばないだろうな。
ファイルサイズ 400KBぐらいだな。圧縮した状態で200KB
これが20KBぐらいに減るのかー、でも誰も喜ばないだろうな。
356デフォルトの名無しさん
2019/11/29(金) 13:01:25.99ID:0dBBAnUQ STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
357はちみつ餃子 ◆8X2XSCHEME
2019/11/29(金) 14:15:39.12ID:J8eB3+F9358デフォルトの名無しさん
2019/11/29(金) 14:21:40.41ID:Tp6caFY5 変数名をメモリやオーバーヘッド無しでエイリアスつける方法ありますか?
メンバ変数に shared_ptr<Data> m_data; みたいなのがあるとして
using text = this->m_data->member.text;
みたいに使いたい変数だけ別名で取り出したい
メンバ変数に shared_ptr<Data> m_data; みたいなのがあるとして
using text = this->m_data->member.text;
みたいに使いたい変数だけ別名で取り出したい
359デフォルトの名無しさん
2019/11/29(金) 14:30:09.62ID:oVgX/GuB 現実問題としてCのライブラリをstdに入れるということ自体が馬鹿げた話だ
今の流れはuint8_tの話だが、extern "C"の関数は装飾名に名前空間が含まれない
今の流れはuint8_tの話だが、extern "C"の関数は装飾名に名前空間が含まれない
360デフォルトの名無しさん
2019/11/29(金) 14:35:12.66ID:yQ0DwMtc361デフォルトの名無しさん
2019/11/29(金) 14:37:49.63ID:Tp6caFY5 >>360
現状それでやってますが、コンパイル時に確定できるのなら他に方法があるのかと思いました
現状それでやってますが、コンパイル時に確定できるのなら他に方法があるのかと思いました
363デフォルトの名無しさん
2019/11/29(金) 14:56:28.90ID:KzrCIvE1 参照解決のコストすら嫌なら
#define text this->m_data->member.text
#define text this->m_data->member.text
364デフォルトの名無しさん
2019/11/29(金) 14:56:51.37ID:GB3X2IZU コンパイル時に確定してるじゃん
365デフォルトの名無しさん
2019/11/29(金) 15:07:19.89ID:M3WjIH4t むしろもとの書き方だと2度参照解決して3度足し算しているような…
366デフォルトの名無しさん
2019/11/29(金) 15:21:18.81ID:YkvT9y9m textに実行時にアクセスするなら
いずれにしろアドレス計算は必須になる
>>360のようにすれば
最適化がうんこで複数回計算されるのを防ぐ可能性すらある
アクセスしないならおそらく最適化によってアドレス計算コードは生成されない
いずれにしろアドレス計算は必須になる
>>360のようにすれば
最適化がうんこで複数回計算されるのを防ぐ可能性すらある
アクセスしないならおそらく最適化によってアドレス計算コードは生成されない
367デフォルトの名無しさん
2019/11/29(金) 15:50:36.19ID:N/f9f1S7 inline付けるとかえって損か
368デフォルトの名無しさん
2019/11/29(金) 17:45:51.93ID:/RbGsSZk m_data の型が shared_ptr<Data> なことを気にしてるのかな。
shared_ptr の指す先のメンバを参照変数でバインドするのは無作法か、とか。
と言うか、上の話は俺の疑問でもあるんだけど。
shared_ptr の指す先のメンバを参照変数でバインドするのは無作法か、とか。
と言うか、上の話は俺の疑問でもあるんだけど。
369デフォルトの名無しさん
2019/11/29(金) 18:15:50.93ID:4DEcYZGM ->
に副作用があるならそりゃ話は別だ
に副作用があるならそりゃ話は別だ
370デフォルトの名無しさん
2019/11/29(金) 18:44:49.74ID:xP2G2+ZO STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
え?リリースするときスタティックリンクして配布するのかって?
ダイナミックリンクするけど?
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
え?リリースするときスタティックリンクして配布するのかって?
ダイナミックリンクするけど?
371デフォルトの名無しさん
2019/11/29(金) 18:46:27.54ID:xP2G2+ZO STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
え?リリースするときスタティックリンクして配布するのかって?
ダイナミックリンクするけど?
え?なんで俺が笑われてるの?
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
え?リリースするときスタティックリンクして配布するのかって?
ダイナミックリンクするけど?
え?なんで俺が笑われてるの?
372デフォルトの名無しさん
2019/11/29(金) 20:21:36.93ID:KHTBF+uC どうもありがとうございます。
373デフォルトの名無しさん
2019/11/30(土) 16:27:23.28ID:4Yq6PogE constexpr定数とconst定数って結局何が違うの?
374デフォルトの名無しさん
2019/11/30(土) 16:40:26.74ID:WebQyLi7 コンパイラに対する単なるヒント
優れたコンパイラでも糞コンパイラでも動きほ同じ
中途半端なコンパイラだと最適化のレベルがもしかしたら違うかも
コンパイル単位にもよる
優れたコンパイラでも糞コンパイラでも動きほ同じ
中途半端なコンパイラだと最適化のレベルがもしかしたら違うかも
コンパイル単位にもよる
375デフォルトの名無しさん
2019/11/30(土) 17:34:29.84ID:sGzVq6Pz constexpr定数はコンパイル時に値が確定することが保証されている
376デフォルトの名無しさん
2019/11/30(土) 17:35:37.90ID:iKPiHg5H >>373
constexpr定数はconstexprな文脈を作る。つまり、
constexpr int a = func()
とするとfunc()はコンパイル時に実行される。当然constexpr関数でなければならない
一方、const定数はconstexprな文脈は作らない
const int a = func()
とした時、func()は実行時に処理される。constexpr関数である必要はない
constexpr定数はconstexprな文脈を作る。つまり、
constexpr int a = func()
とするとfunc()はコンパイル時に実行される。当然constexpr関数でなければならない
一方、const定数はconstexprな文脈は作らない
const int a = func()
とした時、func()は実行時に処理される。constexpr関数である必要はない
377デフォルトの名無しさん
2019/11/30(土) 17:40:18.51ID:4Yq6PogE ああ、初期化に関数を使うと違いが出るんですね
それにconstexprの場合は初期化が保証されていると
ありがとうございました
それにconstexprの場合は初期化が保証されていると
ありがとうございました
378デフォルトの名無しさん
2019/12/01(日) 01:46:51.73ID:j3uX5vWG constexprの強みは、配列のサイズみたいな定数を要求される文脈で使えるってこと。
const変数だとこれができないから、昔はマクロで定数定義するしかなかった。
const変数だとこれができないから、昔はマクロで定数定義するしかなかった。
379デフォルトの名無しさん
2019/12/01(日) 01:49:20.00ID:Hj4I5N6m380デフォルトの名無しさん
2019/12/01(日) 01:54:44.83ID:Nfz3Rlxp sizeofと何が違うんだ
381デフォルトの名無しさん
2019/12/01(日) 08:35:44.43ID:7fh/nHBZ constは設計ミスが多いな
382デフォルトの名無しさん
2019/12/01(日) 08:36:58.95ID:7fh/nHBZ とても神リッチーが作ったように見えない
383デフォルトの名無しさん
2019/12/01(日) 10:24:23.58ID:gHT6E7kc STLにはなぜ木が無いのですか。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 気象庁・高市内閣「この後311級の地震の可能性があります。北海道〜関東の人は1週間は地震が来てもすぐ逃げられる格好をしてください」 [597533159]
- 【動画】ファッションモデルまんこ、裸でランウェイを歩く。これがファッションだと言われて [749674962]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- バリ島で万引きした高校生が叩かれているけどさ
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
