探検
C++相談室 part152
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/07/12(日) 13:42:20.13ID:TX1mpKr62020/07/27(月) 20:51:46.94ID:EghVn5lV
2020/07/27(月) 22:29:41.65ID:SfaUTK+M
2020/07/27(月) 23:14:45.53ID:OPuipBq/
コンパイラが独自仕様で明示的に保証してるなら別にいいよ
特に何も書いてないなら保証されてないと思うべき
特に何も書いてないなら保証されてないと思うべき
2020/07/27(月) 23:30:43.14ID:arCdAL0/
>>42
x86だと即値の場合16bit x2のコードが吐かれる場合があるらしいよ
x86だと即値の場合16bit x2のコードが吐かれる場合があるらしいよ
45デフォルトの名無しさん
2020/07/28(火) 15:19:44.89ID:XpAjM/1U46デフォルトの名無しさん
2020/07/28(火) 15:58:37.01ID:2ZofU2zv forで少しの(255以下)ループ回すときにint i=0;i<10;++iとかするけどなんで
2バイトのintでとって1バイトのunsigned charじゃあまり取らないんだろ?
(typedefで宣言すればタイプ数少なくできるし・・・)
2バイトのintでとって1バイトのunsigned charじゃあまり取らないんだろ?
(typedefで宣言すればタイプ数少なくできるし・・・)
47デフォルトの名無しさん
2020/07/28(火) 16:02:12.30ID:0Pr5T/O4 unsigned char でループしても良いけど
結局 int にされるでしょ
それより int が 2byte っていつの話よ
結局 int にされるでしょ
それより int が 2byte っていつの話よ
48デフォルトの名無しさん
2020/07/28(火) 16:05:58.50ID:2ZofU2zv2020/07/28(火) 16:12:26.94ID:JnUAmZD/
>>48
charは算術式の中ではintに拡張されるって話だ
char a, b;
printf("%u", sizeof(a)); //1, これは左辺値で算術式ではない
printf("%u", sizeof(a - b)); //2, 減算の算術式
printf("%u", sizeof(+a)); //2, 単項プラスの算術式
charは算術式の中ではintに拡張されるって話だ
char a, b;
printf("%u", sizeof(a)); //1, これは左辺値で算術式ではない
printf("%u", sizeof(a - b)); //2, 減算の算術式
printf("%u", sizeof(+a)); //2, 単項プラスの算術式
50デフォルトの名無しさん
2020/07/28(火) 16:16:35.96ID:2ZofU2zv2020/07/28(火) 16:18:26.72ID:JnUAmZD/
>>46
charの拡張はcpu内部のレジスタで行われるだけで
メモリにはその痕跡が残らない
だからintをunsigned charにすればメモリを節約する効果は
期待できる(ただし保証はされない)
俺も実はforの制御変数は[0, 256)の範囲内でもintを使うが
正直に本音を言うと長い長いtypedef unsigned charをタイプせずに
短くintで済むからだ
普段建前ではintは自然なサイズの整数だからとか言い訳してるけどね
charの拡張はcpu内部のレジスタで行われるだけで
メモリにはその痕跡が残らない
だからintをunsigned charにすればメモリを節約する効果は
期待できる(ただし保証はされない)
俺も実はforの制御変数は[0, 256)の範囲内でもintを使うが
正直に本音を言うと長い長いtypedef unsigned charをタイプせずに
短くintで済むからだ
普段建前ではintは自然なサイズの整数だからとか言い訳してるけどね
52デフォルトの名無しさん
2020/07/28(火) 16:20:24.69ID:2ZofU2zv53デフォルトの名無しさん
2020/07/28(火) 16:23:12.92ID:tckSAZy52020/07/28(火) 16:23:36.08ID:JnUAmZD/
>>50
されるよ
たとえば、こういう場合
char c = 0;
c = c | 1;
部分式 c | 1 は ((int)c) | 1 で計算され結果はint
c = (char)結果; という具合にcharに戻して書き込む
c は00000000
c | 1 は0000000000000001
=は00000001にしてからを書き込む
一旦intにされたものをcharに戻して書き込んでいるが
普段はこのことを忘れていても正しいコードが書けてしまう
されるよ
たとえば、こういう場合
char c = 0;
c = c | 1;
部分式 c | 1 は ((int)c) | 1 で計算され結果はint
c = (char)結果; という具合にcharに戻して書き込む
c は00000000
c | 1 は0000000000000001
=は00000001にしてからを書き込む
一旦intにされたものをcharに戻して書き込んでいるが
普段はこのことを忘れていても正しいコードが書けてしまう
2020/07/28(火) 16:27:57.80ID:JnUAmZD/
おっと、ここC++スレやん
Cスレのつもりだったw
C++の場合はここ気をつけて
void func(char); //#1
void func(int); //#2
char c = 0;
func(c | 1); //#2
Cスレのつもりだったw
C++の場合はここ気をつけて
void func(char); //#1
void func(int); //#2
char c = 0;
func(c | 1); //#2
56デフォルトの名無しさん
2020/07/28(火) 16:28:23.54ID:2ZofU2zv57デフォルトの名無しさん
2020/07/28(火) 16:29:57.66ID:2ZofU2zv2020/07/28(火) 16:36:03.22ID:Vr5x1U6Z
>>51-52
「メモリを節約する効果は期待できる(ただし保証はされない)」っていうより
「メモリを節約する効果は期待できない(ただし可能性はゼロではない)」でしょ。
ほんとうにメモリ節約のためにやるなら実測のうえ結果をコメントで添えてたのむ。
「メモリを節約する効果は期待できる(ただし保証はされない)」っていうより
「メモリを節約する効果は期待できない(ただし可能性はゼロではない)」でしょ。
ほんとうにメモリ節約のためにやるなら実測のうえ結果をコメントで添えてたのむ。
2020/07/28(火) 16:41:14.06ID:JnUAmZD/
60デフォルトの名無しさん
2020/07/28(火) 16:43:35.65ID:XpAjM/1U (ただし可能性はゼロではない)
2020/07/28(火) 16:51:19.06ID:FdPQCZeu
>>56
char使ってメモリ節約ってのは基本的にクラス・構造体のメンバとか配列、かつそれらが多用される場合ね
単発の一時変数をcharにしたところでそれがスタックに置かれたとしてもアライメントで何も節約できてないどころか
整数拡張のオーバヘッドで逆に非効率になる
引数にchar使うのも性能上は意味がない
組み込みマイコンなら特に逆アセは読めるようになった方がいいよ
char使ってメモリ節約ってのは基本的にクラス・構造体のメンバとか配列、かつそれらが多用される場合ね
単発の一時変数をcharにしたところでそれがスタックに置かれたとしてもアライメントで何も節約できてないどころか
整数拡張のオーバヘッドで逆に非効率になる
引数にchar使うのも性能上は意味がない
組み込みマイコンなら特に逆アセは読めるようになった方がいいよ
62デフォルトの名無しさん
2020/07/28(火) 17:03:52.96ID:2ZofU2zv ちょっと追加で調べて納得したのはcharを扱うメリットとしては
int ポインタ型に +1 した際、何バイト進むのかは処理系に依存するけど
char ポインタ型なら必ず1バイトだけ進むから
その場合においてメリットがあるからchar使えってことですかね?
int ポインタ型に +1 した際、何バイト進むのかは処理系に依存するけど
char ポインタ型なら必ず1バイトだけ進むから
その場合においてメリットがあるからchar使えってことですかね?
63デフォルトの名無しさん
2020/07/28(火) 17:08:44.62ID:XpAjM/1U >>62
それ最初の質問と何か関係あるか?
それ最初の質問と何か関係あるか?
2020/07/28(火) 17:15:03.80ID:JnUAmZD/
2020/07/29(水) 00:51:49.61ID:YVVFldw+
デバッガでトレースしながら読むから逆アセだな
アセンブラ吐かせるってそれ用にビルド設定用意するのか?
アセンブラ吐かせるってそれ用にビルド設定用意するのか?
2020/07/29(水) 04:47:56.76ID:8sSsdFab
泥縄で設定変えるのイヤだから
端っからアセンブラ経由にしてる
端っからアセンブラ経由にしてる
2020/07/30(木) 06:46:58.19ID:82YOHtIh
C++でUnicodeを扱いたいんですがライブラリを探したほうが良いですか?
なにか定番のライブラリありませんか?
なにか定番のライブラリありませんか?
2020/07/30(木) 07:59:44.22ID:h+N/x6i+
ICU一択でしょ
2020/07/30(木) 21:53:30.81ID:82YOHtIh
70デフォルトの名無しさん
2020/07/31(金) 10:43:54.52ID:N0eufbNj 逼迫中
71デフォルトの名無しさん
2020/07/31(金) 13:57:05.58ID:RNPOl6hd 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
☆ VM + ASM を書いた (C#, DX) * x86 ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
☆ VM + ASM を書いた (C#, DX) * x86 ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
2020/08/08(土) 00:45:58.56ID:0OMeneB5
保守
2020/08/10(月) 15:43:27.57ID:fh5hS3eV
UDPで、メッセージをブロードキャストすると該当するコンピューターがユニキャストで応答するんですが、
このとき、シングルスレッドで、ブロッキングでsendでブロードキャストしてすぐにrecvで受信待ちするのは素敵ではないですよね?
このとき、シングルスレッドで、ブロッキングでsendでブロードキャストしてすぐにrecvで受信待ちするのは素敵ではないですよね?
2020/08/10(月) 15:45:49.73ID:fh5hS3eV
UDP でもともとreliableでないですがsendとrecvの間にネットワークスタックが受信したりすると、recvで受信できない?
2020/08/10(月) 15:48:15.44ID:fh5hS3eV
UDPはじめてなんですが、受信を先に立ち上げてから、sendすべきでしょうか?
2020/08/10(月) 16:28:51.88ID:bhDIRnmP
UDPスレで聞け
2020/08/10(月) 18:44:21.00ID:94dKV070
一文で「で」使いすぎ
2020/08/10(月) 21:36:29.55ID:DdNEnUy+
○○で××で△△な□□ってオタクが好む文語でしょww
2020/08/10(月) 22:39:58.88ID:miZfIOtK
それオタクていうか、ラノベ勢やん
80デフォルトの名無しさん
2020/08/12(水) 21:03:47.89ID:CtzJaQ9q std::unordered_mapのキーをstd::stringにして
findで検索する時にstd::string_viewを使って検索したいんだけど、
error C2664 : 'std::string_view' から 'const _Kty &' へ変換できません。
と出てしまいます。
std::unordered_mapの場合ではどうすればいいでしょうか?(´・ω・`)
以下仮コード
std::unordered_map<std::string, int> a;
a.insert_or_assign("AAA", 10);
std::string_view b = "AAA";
std::unordered_map<std::string, int>::iterator it = a.find(b);
findで検索する時にstd::string_viewを使って検索したいんだけど、
error C2664 : 'std::string_view' から 'const _Kty &' へ変換できません。
と出てしまいます。
std::unordered_mapの場合ではどうすればいいでしょうか?(´・ω・`)
以下仮コード
std::unordered_map<std::string, int> a;
a.insert_or_assign("AAA", 10);
std::string_view b = "AAA";
std::unordered_map<std::string, int>::iterator it = a.find(b);
2020/08/12(水) 21:20:56.14ID:3e1Z4brU
>>80 a.find(std::string(b));
82デフォルトの名無しさん
2020/08/12(水) 21:37:06.56ID:CtzJaQ9q >>81
あ・・・・・・(´・ω・`)
できました。ありがとうございます。
ついでに聞きたいのですが、
std::stringに変換することなくfind関数を使用するにはどうすればいいんでしょうか?
std::mapであれば、std::less<>を用いることでfind関数を使用した時std::string_viewでも検索できるようになりますが、
std::unordered_mapの場合はどのようにすればいいんでしょうか?
あ・・・・・・(´・ω・`)
できました。ありがとうございます。
ついでに聞きたいのですが、
std::stringに変換することなくfind関数を使用するにはどうすればいいんでしょうか?
std::mapであれば、std::less<>を用いることでfind関数を使用した時std::string_viewでも検索できるようになりますが、
std::unordered_mapの場合はどのようにすればいいんでしょうか?
2020/08/12(水) 21:43:02.63ID:3e1Z4brU
>>82
https://wg21.link/P0919
https://cpprefjp.github.io/lang/cpp20.html
> 順序付き連想コンテナと同様に、非順序連想コンテナの検索処理で、一時オブジェクトが生成されるコストを抑える拡張を追加。...
https://wg21.link/P0919
https://cpprefjp.github.io/lang/cpp20.html
> 順序付き連想コンテナと同様に、非順序連想コンテナの検索処理で、一時オブジェクトが生成されるコストを抑える拡張を追加。...
84デフォルトの名無しさん
2020/08/12(水) 21:49:15.10ID:CtzJaQ9q85デフォルトの名無しさん
2020/08/13(木) 10:37:08.60ID:m1xh97jB std::unordered_map<const std::string, int> a;
86デフォルトの名無しさん
2020/08/13(木) 11:17:58.00ID:hnCcHlo387デフォルトの名無しさん
2020/08/16(日) 03:35:19.99ID:Qk/OMLZN 今年学生でコロナ下でオンラインばかりなので合間を縫って独学に勤しんでます。
優しいc++を読み終えました
現在atcoderのabcやオライリーから出てるmodern c++ チャレンジ等をやっていますが、何をもってプログラミングが出来ると言うのでしょうか?
テトリス等もサイトを参考に書いたりしてみました。
自分はlinux上で動作する音楽プレイヤーソフトを作成したいと思うのですが、文法等はある程度理解していてもいざ自分で一から作れと言われると出来ません。c/c++で書かれているgithubのソースコード等は読めるんです
読めると言うのは、知らない文法やライブラリ等検索出来るためなんとなく実装内容がわかるって意味です
しかし自分で一からとなると何から始めればいいのか…
皆さんはこの壁をどう超えましたか?それとも壁に出会いませんでしたか?もしそれなりの規模の開発をする際止まった経験があるならばアドバイスを欲しいです
長文すみません
優しいc++を読み終えました
現在atcoderのabcやオライリーから出てるmodern c++ チャレンジ等をやっていますが、何をもってプログラミングが出来ると言うのでしょうか?
テトリス等もサイトを参考に書いたりしてみました。
自分はlinux上で動作する音楽プレイヤーソフトを作成したいと思うのですが、文法等はある程度理解していてもいざ自分で一から作れと言われると出来ません。c/c++で書かれているgithubのソースコード等は読めるんです
読めると言うのは、知らない文法やライブラリ等検索出来るためなんとなく実装内容がわかるって意味です
しかし自分で一からとなると何から始めればいいのか…
皆さんはこの壁をどう超えましたか?それとも壁に出会いませんでしたか?もしそれなりの規模の開発をする際止まった経験があるならばアドバイスを欲しいです
長文すみません
2020/08/16(日) 03:47:01.77ID:Degs0Zl8
初心者は、Ruby on Rails で、web アプリのポートフォリオを作る
むしろ、コーディング・テストよりも、
アプリの設計・構築運用など、Linux の勉強の方が多い
文法・コーディングだけだと、ちょっとしたコマンドぐらいしか作れない
Rails みたいなフレームワークを使わないと、
データベースを含んだ、webアプリなどは作れない
むしろ、コーディング・テストよりも、
アプリの設計・構築運用など、Linux の勉強の方が多い
文法・コーディングだけだと、ちょっとしたコマンドぐらいしか作れない
Rails みたいなフレームワークを使わないと、
データベースを含んだ、webアプリなどは作れない
2020/08/16(日) 05:51:14.48ID:1OSQgfCu
2020/08/16(日) 06:33:25.81ID:wVZFHsSL
>>87
> 何をもってプログラミングが出来ると言うのでしょうか?
何かを作るぞ! と頑張って、目標を達成できること
「何か」はゲームでもいいしドローンの自動運転でもいいから
自分の好みで勝手に決めればいい
87は音楽プレイヤーだろ?
いきなり市販のプレイヤーに匹敵しなくてもいい
こんなことできないかな〜とアイディア先行で実験してみて
うまくいったら見栄えも気にして仕上げにかかる
てなことを小刻みに繰り返すとアジャイルっぽくなる
> 何をもってプログラミングが出来ると言うのでしょうか?
何かを作るぞ! と頑張って、目標を達成できること
「何か」はゲームでもいいしドローンの自動運転でもいいから
自分の好みで勝手に決めればいい
87は音楽プレイヤーだろ?
いきなり市販のプレイヤーに匹敵しなくてもいい
こんなことできないかな〜とアイディア先行で実験してみて
うまくいったら見栄えも気にして仕上げにかかる
てなことを小刻みに繰り返すとアジャイルっぽくなる
2020/08/16(日) 07:20:43.69ID:5tP8nVqa
第二不完全性定理の制約を受けず、
停止性問題を解けること、
って無理ゲーじゃん?!?
なんで人間ってプログラミングできるの?!!?!
停止性問題を解けること、
って無理ゲーじゃん?!?
なんで人間ってプログラミングできるの?!!?!
92デフォルトの名無しさん
2020/08/16(日) 09:23:07.48ID:ng3yYkoc ユニバーサル文法があるから
その辺りは余り深く考えても意味が無い
出来るから出来る
出来ない奴は出来ない
その辺りは余り深く考えても意味が無い
出来るから出来る
出来ない奴は出来ない
2020/08/16(日) 10:39:09.01ID:5tP8nVqa
ユニバーサル文法を操るメンタルオーガンが実在したとしても
そいつがたんなる機械なら解決にならないんじゃ…
そいつがたんなる機械なら解決にならないんじゃ…
2020/08/16(日) 12:13:35.40ID:INgchOov
95デフォルトの名無しさん
2020/08/16(日) 14:54:00.65ID:43uVw8aV2020/08/16(日) 15:36:41.55ID:1Qmt1HH2
>>87
アプリ作り上げるのに言語の詳しい知識って実はあんまり要らないんだよね
c++だとtemplateにはまって一日つぶすとかざらにあるんだけど、
これってただの自己満だよな〜って思う
愚直なコードでとりあえず解決しておいて、その分
アプリとして作り込むのに時間かけた方がよかったんだろなーと
まぁそれはさておき、音楽プレーヤなら
- GUIフレームワーク
- CODECライブラリ
- linuxシステムコール、libc
あたりの知識がないと進められないでしょう
GUIフレームのお作法の理解とか、
CODECもフォーマット特有の制約が上位まで波及したりするから結構知識いるよね
まず何を使うかの選定からでしょう
あと、たぶんお前さんの作りたいものは既に世の中にごまんとあるはず
それを承知で勉強と割り切って作るのはいいんだけど、
あんまり大きいものは最初の目標にしないように
すぐに情熱失ってやめてしまうのがオチ
アプリ作り上げるのに言語の詳しい知識って実はあんまり要らないんだよね
c++だとtemplateにはまって一日つぶすとかざらにあるんだけど、
これってただの自己満だよな〜って思う
愚直なコードでとりあえず解決しておいて、その分
アプリとして作り込むのに時間かけた方がよかったんだろなーと
まぁそれはさておき、音楽プレーヤなら
- GUIフレームワーク
- CODECライブラリ
- linuxシステムコール、libc
あたりの知識がないと進められないでしょう
GUIフレームのお作法の理解とか、
CODECもフォーマット特有の制約が上位まで波及したりするから結構知識いるよね
まず何を使うかの選定からでしょう
あと、たぶんお前さんの作りたいものは既に世の中にごまんとあるはず
それを承知で勉強と割り切って作るのはいいんだけど、
あんまり大きいものは最初の目標にしないように
すぐに情熱失ってやめてしまうのがオチ
97デフォルトの名無しさん
2020/08/16(日) 16:32:23.69ID:Qk/OMLZN 87のものです 皆さん有難うございます
再生させる機能やタグの取得等の割りかし簡単そうなものから実装していき
あわよくばイコライザーやスペクトラム等の機能も追加していこうと思います
あと、linuxだとuiや機能が優れた音楽プレイヤーって実は少ないんですよね…GitHub等でも探したのですが…foobar2000とかしかなくて正直ダサくて…
ないから自分で勉強がてら書いてみたいなと思った次第でした
再生させる機能やタグの取得等の割りかし簡単そうなものから実装していき
あわよくばイコライザーやスペクトラム等の機能も追加していこうと思います
あと、linuxだとuiや機能が優れた音楽プレイヤーって実は少ないんですよね…GitHub等でも探したのですが…foobar2000とかしかなくて正直ダサくて…
ないから自分で勉強がてら書いてみたいなと思った次第でした
2020/08/16(日) 17:31:00.86ID:PN3bHl0Q
>>87
〉何をもってプログラミングが出来ると言うのでしょうか?
他の人も似たようなこと言ってるけど、「ソフトを完成させる段取りを知っていること」が一つの目安。
実現機能を明確化して、実装する機能に分解して、必要なリソース・ライブラリを集めて、全部の機能を実装して、誤動作しないようにバグ取りをする。
これができれば言えるんじゃない?
少なくとも「プログラムするためには何が必要か」がわかるようになる。
〉何をもってプログラミングが出来ると言うのでしょうか?
他の人も似たようなこと言ってるけど、「ソフトを完成させる段取りを知っていること」が一つの目安。
実現機能を明確化して、実装する機能に分解して、必要なリソース・ライブラリを集めて、全部の機能を実装して、誤動作しないようにバグ取りをする。
これができれば言えるんじゃない?
少なくとも「プログラムするためには何が必要か」がわかるようになる。
99デフォルトの名無しさん
2020/08/16(日) 18:12:46.45ID:8WlfPd5U100デフォルトの名無しさん
2020/08/16(日) 18:35:06.05ID:wVZFHsSL >>96
ダウト
「こうしたい」と、せっかく閃いたアイディアを
表現力が足りないばかりに諦めたり
誰かさんみたいにtemplateがロクに使えなくて一日つぶすとかってのは
言語の詳しい知識が足りないことに他ならない
それを何やかんやと言い訳考えることこそ自己満以外の何物でもない
言語の基本をしっかり固めるのを軽視するとこうなるという典型だ
ダウト
「こうしたい」と、せっかく閃いたアイディアを
表現力が足りないばかりに諦めたり
誰かさんみたいにtemplateがロクに使えなくて一日つぶすとかってのは
言語の詳しい知識が足りないことに他ならない
それを何やかんやと言い訳考えることこそ自己満以外の何物でもない
言語の基本をしっかり固めるのを軽視するとこうなるという典型だ
101デフォルトの名無しさん
2020/08/16(日) 19:20:29.73ID:x8ZjthFZ progress_displayいつになったら規格に取り込まれるんだ
102デフォルトの名無しさん
2020/08/17(月) 02:08:49.38ID:u6ES7f8s >誰かさんみたいにtemplateがロクに使えなくて一日つぶす
そんなこと一言も言ってなかったと思うが(俺96じゃないよ)
いつものアホが沸いたのかな?
そんなこと一言も言ってなかったと思うが(俺96じゃないよ)
いつものアホが沸いたのかな?
103デフォルトの名無しさん
2020/08/17(月) 02:55:30.59ID:vOFQCRbE というか他人が思ったことに対してダウト〜っていうセンスに痺れるわ
104デフォルトの名無しさん
2020/08/17(月) 05:56:47.89ID:TQifZMS/ >>102
strcmp的なやつとは話にならねえ
strcmp的なやつとは話にならねえ
105デフォルトの名無しさん
2020/08/17(月) 07:50:57.12ID:p3n8cAbg strcmp的なやつって笑える表現だな
a="templateにはまって一日つぶす";
b="templateがロクに使えなくて一日つぶす";
ここでstrcmp(a,b)が偽になる以上どういう意図のなのか説明が必要だろ
>言語の基本をしっかり固める
とはまったく逆の事をしてることに気づけ
a="templateにはまって一日つぶす";
b="templateがロクに使えなくて一日つぶす";
ここでstrcmp(a,b)が偽になる以上どういう意図のなのか説明が必要だろ
>言語の基本をしっかり固める
とはまったく逆の事をしてることに気づけ
106デフォルトの名無しさん
2020/08/17(月) 08:11:11.90ID:TQifZMS/ へーえ、おまえさんとこではstrcmp(a, b)がint(0)を返すのか
ユーザーがあまりにも馬鹿過ぎると標準ライブラリまでバグるとは知らんかったわ
ユーザーがあまりにも馬鹿過ぎると標準ライブラリまでバグるとは知らんかったわ
107デフォルトの名無しさん
2020/08/17(月) 16:39:05.57ID:p3n8cAbg strcmpてのは三値を返すんだから0が真で非0が偽
>>107
普通は零が偽、非零であればなんでも真、なんですけど
普通は零が偽、非零であればなんでも真、なんですけど
109デフォルトの名無しさん
2020/08/17(月) 19:41:49.25ID:aDjhg6Zt >>107
無茶苦茶言わないで、そこは「strcmp(a,b)==0が偽」の書き間違いだと認めるぐらいしようぜ。
無茶苦茶言わないで、そこは「strcmp(a,b)==0が偽」の書き間違いだと認めるぐらいしようぜ。
110デフォルトの名無しさん
2020/08/17(月) 19:49:37.18ID:I0An2PUB 揚げ足とりこそC++erの本懐よ
111はちみつ餃子 ◆8X2XSCHEME
2020/08/17(月) 20:13:14.96ID:Km1hLS23 strcmp を定義するのは言語仕様なんやから
あえて言語仕様と異なる用語を使うんなら
その適用範囲 (プロジェクト単位?) と共に定義を明文化するのは最低限の要求やろ。
当事者が合意した範囲内でなら一見して変な用語でも使うのは好きにすりゃええ。
たとえばハードウェアに近い部分なら負論理がソースコード上に露骨に現れることだって無いとは言いきれん。
ただそれは特殊な例を総合的に見てあえて奇妙な用語を使った方が良くなる場合にとる選択肢であって、
「三値を返すんだから」というようわからん理屈では正当化でけへんし、
言語のスレとしては許容でけへんわ。
あえて言語仕様と異なる用語を使うんなら
その適用範囲 (プロジェクト単位?) と共に定義を明文化するのは最低限の要求やろ。
当事者が合意した範囲内でなら一見して変な用語でも使うのは好きにすりゃええ。
たとえばハードウェアに近い部分なら負論理がソースコード上に露骨に現れることだって無いとは言いきれん。
ただそれは特殊な例を総合的に見てあえて奇妙な用語を使った方が良くなる場合にとる選択肢であって、
「三値を返すんだから」というようわからん理屈では正当化でけへんし、
言語のスレとしては許容でけへんわ。
112デフォルトの名無しさん
2020/08/17(月) 20:18:38.27ID:vrG6zXoN 急にバリバリの関西弁でどないしたんや
113デフォルトの名無しさん
2020/08/17(月) 20:25:51.22ID:ltcLkjuo 個人的には整数のサイズにこだわるときは
#include <cstdint>
してint8_tとか使ってるなぁ
#include <cstdint>
してint8_tとか使ってるなぁ
114デフォルトの名無しさん
2020/08/17(月) 21:37:15.36ID:S/xJ/Voo そもそも3値な時点でbooleanの真偽かどうか議論すること自体無意味
115デフォルトの名無しさん
2020/08/17(月) 22:07:28.50ID:cXN7EgSQ 真偽値じゃないものを真偽値扱いしてもエラーとして検出されない、根が深い問題なんだよな。
型が無いB言語に末代まで祟られているとも。
型が無いB言語に末代まで祟られているとも。
116はちみつ餃子 ◆8X2XSCHEME
2020/08/17(月) 23:56:15.69ID:Km1hLS23 整数の暗黙の型変換はそれなりに上手くいってると思うけど
bool が整数型扱いってのがいきすぎた一般化だったのかもな。
bool が整数型扱いってのがいきすぎた一般化だったのかもな。
117デフォルトの名無しさん
2020/08/18(火) 00:15:03.69ID:6UORXKST 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
VM + ASM のダウンロード
ttp://up.x0000.net/files/TSimulang.zip
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
VM + ASM のダウンロード
ttp://up.x0000.net/files/TSimulang.zip
118デフォルトの名無しさん
2020/08/19(水) 03:53:13.32ID:itvjYGVQ 45歳こどおじ高卒無職歴約10年
10年以上前にIT系業界にいたが主にPC保守やユーザサポートをトータルしても10年くらい
コード開発の実務は30代の頃VB約3ヶ月でばっくれ
30代の頃エクセルVBA約3ヶ月でばっくれ
両方超ブラックだった
なんか疲れて実家帰ったらいつの間にか10年経ってた
暇なんで趣味で勉強してみた
2年前くらいに3ヶ月ほどjavaとpythonとc++
各言語のpaizaでC問題全部回答B問題10問くらい解けたからもうやってない
ガチで就職探したけど当然無くて諦めて勉強もやめてた
んでまた競プロサイトで練習始めたんだけど結局アルゴリズム意味不明で詰んだ感じ
暇なんで暇つぶしの惰性で練習してる感じ
こんなレベルで就職あるかな?
無職10年は適当にバイトしてたとかでごまかすコミュ力はあると自負してるつもり
こんな新人来られてもやっぱ迷惑だよね
てか俺が採用担当だったら絶対に採用しない
死んだほうが良いかな?
転生してやりなおしたい
10年以上前にIT系業界にいたが主にPC保守やユーザサポートをトータルしても10年くらい
コード開発の実務は30代の頃VB約3ヶ月でばっくれ
30代の頃エクセルVBA約3ヶ月でばっくれ
両方超ブラックだった
なんか疲れて実家帰ったらいつの間にか10年経ってた
暇なんで趣味で勉強してみた
2年前くらいに3ヶ月ほどjavaとpythonとc++
各言語のpaizaでC問題全部回答B問題10問くらい解けたからもうやってない
ガチで就職探したけど当然無くて諦めて勉強もやめてた
んでまた競プロサイトで練習始めたんだけど結局アルゴリズム意味不明で詰んだ感じ
暇なんで暇つぶしの惰性で練習してる感じ
こんなレベルで就職あるかな?
無職10年は適当にバイトしてたとかでごまかすコミュ力はあると自負してるつもり
こんな新人来られてもやっぱ迷惑だよね
てか俺が採用担当だったら絶対に採用しない
死んだほうが良いかな?
転生してやりなおしたい
119デフォルトの名無しさん
2020/08/19(水) 06:19:51.21ID:AaZqqXX6 マ板でどうぞ
120デフォルトの名無しさん
2020/08/20(木) 05:04:54.05ID:DqyqYTXG if (!strcmp(a, b)) goto hell;
121デフォルトの名無しさん
2020/08/20(木) 11:16:03.05ID:RX/3qqm6 hell終わるど
122デフォルトの名無しさん
2020/08/23(日) 16:03:07.43ID:SVuEjc7r 例えば、
x<1 || y>3
と書いた場合、人間なら、この < や > は、大小比較をする比較演算子だと
思うでしょうが、コンパイラにとっては、1 || y を実引数とするところの
template展開だと勘違いする可能性があります。
どうやってこれを区別しているのでしょうか?
x<1 || y>3
と書いた場合、人間なら、この < や > は、大小比較をする比較演算子だと
思うでしょうが、コンパイラにとっては、1 || y を実引数とするところの
template展開だと勘違いする可能性があります。
どうやってこれを区別しているのでしょうか?
123デフォルトの名無しさん
2020/08/23(日) 16:05:12.45ID:Exm+Pt+Z どちらかというと
< <>, <> >
みたいなときに
<<>, <>>
って書くと期待通りに動かないのが面倒だと思う
< <>, <> >
みたいなときに
<<>, <>>
って書くと期待通りに動かないのが面倒だと思う
124デフォルトの名無しさん
2020/08/23(日) 16:08:14.77ID:SVuEjc7r x がtemplate名であるかどうかを検査するのでしょうか?
125デフォルトの名無しさん
2020/08/23(日) 16:18:37.58ID:SVuEjc7r pure C で、構文ツリーを作りたいとき、出現してきた名前トークンがどう宣言されて
いるかを知らなくても、構文ツリーを作れてしまいます。
ところが、もし、xがtemplateの名前として宣言されているかどうかを知らなければ、
< が、比較演算なのが、template引き数の始まりを示す括弧なのかの区別が
付かないのであれば、そうはいかなくなります。
pure C の場合:
構文ツリーを作る ---> ツリーの中にある中の名前の宣言を調べ、種類を見る。
で済んだところが、C++の場合、下手すれば、
構文ツリーを作る際に、出現した名前の宣言も逐次、調べる。
ということになります。
いるかを知らなくても、構文ツリーを作れてしまいます。
ところが、もし、xがtemplateの名前として宣言されているかどうかを知らなければ、
< が、比較演算なのが、template引き数の始まりを示す括弧なのかの区別が
付かないのであれば、そうはいかなくなります。
pure C の場合:
構文ツリーを作る ---> ツリーの中にある中の名前の宣言を調べ、種類を見る。
で済んだところが、C++の場合、下手すれば、
構文ツリーを作る際に、出現した名前の宣言も逐次、調べる。
ということになります。
126デフォルトの名無しさん
2020/08/23(日) 16:40:37.67ID:VT3zweO2 その場合、トークンとしての'<'が比較演算子なのかテンプレートの括弧なのかは区別しないで
構文解釈の結果として文脈によって決定するのが常套手段だろうね。
https://github.com/antlr/grammars-v4/blob/master/cpp/CPP14.g4
>ところが、もし、xがtemplateの名前として宣言されているかどうかを知らなければ、
>< が、比較演算なのが、template引き数の始まりを示す括弧なのかの区別が
>付かないのであれば、そうはいかなくなります。
そうならない仕様にはしているはず。
どうしても区別がつかない部分は前にtemplateキーワードを置く必要があるとか。
構文解釈の結果として文脈によって決定するのが常套手段だろうね。
https://github.com/antlr/grammars-v4/blob/master/cpp/CPP14.g4
>ところが、もし、xがtemplateの名前として宣言されているかどうかを知らなければ、
>< が、比較演算なのが、template引き数の始まりを示す括弧なのかの区別が
>付かないのであれば、そうはいかなくなります。
そうならない仕様にはしているはず。
どうしても区別がつかない部分は前にtemplateキーワードを置く必要があるとか。
127デフォルトの名無しさん
2020/08/23(日) 17:11:53.76ID:SVuEjc7r >>126
>その場合、トークンとしての'<'が比較演算子なのかテンプレートの括弧なのかは区別しないで
>構文解釈の結果として文脈によって決定するのが常套手段だろうね。
ここは、x<・・・> の x がtemplate名かどうかを区別できるところの
意味解析の段階ではなく、本当に構文解析の段階ですか?
>その場合、トークンとしての'<'が比較演算子なのかテンプレートの括弧なのかは区別しないで
>構文解釈の結果として文脈によって決定するのが常套手段だろうね。
ここは、x<・・・> の x がtemplate名かどうかを区別できるところの
意味解析の段階ではなく、本当に構文解析の段階ですか?
128デフォルトの名無しさん
2020/08/23(日) 17:21:37.10ID:PNDTq65a xがtemplate名かどうかは識別子の辞書を見たらワカル
辞書の中身はその時点までのソースコードの内容と
言語規格上の定義(形式言語ではなく、自然言語で書かれた仕様)に依存するから
言語の「意味」に依存するところがあるからこれを意味解析に含めるかどうかは議論の余地があるが、
普通のコンパイラ屋のマインドとしては
識別子の辞書を見てxが(例えば)template名であると判明したら
xがtemplate名xという「字句」であるという前提の下に字句解析した結果を文法パーサに入力するので
構文解析の範疇だと思われ
辞書の中身はその時点までのソースコードの内容と
言語規格上の定義(形式言語ではなく、自然言語で書かれた仕様)に依存するから
言語の「意味」に依存するところがあるからこれを意味解析に含めるかどうかは議論の余地があるが、
普通のコンパイラ屋のマインドとしては
識別子の辞書を見てxが(例えば)template名であると判明したら
xがtemplate名xという「字句」であるという前提の下に字句解析した結果を文法パーサに入力するので
構文解析の範疇だと思われ
129デフォルトの名無しさん
2020/08/23(日) 17:23:59.45ID:SVuEjc7r >>128
昔読んだコンパイラの本には、これまでに行われた宣言の情報を参照するのは、
意味解析だ、とあったと記憶しています。
逆に、それが意味解析でないのなら、何が意味解析になるのでしょうか。
「解析」ですから、コード生成では有りませんし。
昔読んだコンパイラの本には、これまでに行われた宣言の情報を参照するのは、
意味解析だ、とあったと記憶しています。
逆に、それが意味解析でないのなら、何が意味解析になるのでしょうか。
「解析」ですから、コード生成では有りませんし。
130デフォルトの名無しさん
2020/08/23(日) 17:26:01.74ID:PNDTq65a それよか
std::vector<std::string>> x("Hello");
と書いたら
std::vector<std::string> > x("Hello");
とコンパイラに解釈させるという方がよっぽど凶悪
これこそ構文の意味を知らねば「>>」という単一の字句なのか、「>」という字句2個なのか
定まらないという意味で字句解析→文法解析の流れをぶち壊しにしてくれる
std::vector<std::string>> x("Hello");
と書いたら
std::vector<std::string> > x("Hello");
とコンパイラに解釈させるという方がよっぽど凶悪
これこそ構文の意味を知らねば「>>」という単一の字句なのか、「>」という字句2個なのか
定まらないという意味で字句解析→文法解析の流れをぶち壊しにしてくれる
131デフォルトの名無しさん
2020/08/23(日) 17:28:17.74ID:PNDTq65a132デフォルトの名無しさん
2020/08/23(日) 17:29:06.23ID:PNDTq65a133デフォルトの名無しさん
2020/08/23(日) 17:31:18.68ID:PNDTq65a 訂正2、。n_
>>130 正:
std::vector<std::vector<std::string>> x("Hello");
と書いたら
std::vector<std::vector<std::string> > x("Hello");
とコンパイラに解釈させる方がよっぽど凶悪
>>130 正:
std::vector<std::vector<std::string>> x("Hello");
と書いたら
std::vector<std::vector<std::string> > x("Hello");
とコンパイラに解釈させる方がよっぽど凶悪
134デフォルトの名無しさん
2020/08/23(日) 17:39:05.76ID:SVuEjc7r >>131
C++の場合、辞書の参照も簡単では有りません。
namespaceや、クラススコープの名前などが複雑に絡み、
スコープ演算子を使った、修飾名などがあり、
Q1::Q2::Q3::name<xxx>
のような場合がありますが、
ややこしいのは、実際に template を展開してみないことには、nameがどういう識別子
なのかも分からない事があることです。例えば、
aaa<xxx>::bbb<yyyy>::name < 5, 5 > y
と有った場合、name が変数名なのか、template 名なのかによって、
< が template 引き数の始まりなのか、比較演算子なのかが決まる可能性があります。
ただ、この場合、> の後に名前トークン y が来ていますが、template展開だと
すると、この並びは恐らく、必ず間違いであるはずで、比較演算子でしか
合法にはならないと思います。
C++の場合、辞書の参照も簡単では有りません。
namespaceや、クラススコープの名前などが複雑に絡み、
スコープ演算子を使った、修飾名などがあり、
Q1::Q2::Q3::name<xxx>
のような場合がありますが、
ややこしいのは、実際に template を展開してみないことには、nameがどういう識別子
なのかも分からない事があることです。例えば、
aaa<xxx>::bbb<yyyy>::name < 5, 5 > y
と有った場合、name が変数名なのか、template 名なのかによって、
< が template 引き数の始まりなのか、比較演算子なのかが決まる可能性があります。
ただ、この場合、> の後に名前トークン y が来ていますが、template展開だと
すると、この並びは恐らく、必ず間違いであるはずで、比較演算子でしか
合法にはならないと思います。
135デフォルトの名無しさん
2020/08/23(日) 17:40:50.98ID:08jUbd/H いつもの人か
136デフォルトの名無しさん
2020/08/23(日) 17:49:20.95ID:VT3zweO2 >>127
どのテンプレートが使われるかの判断は意味解析だろうけど、テンプレートの使用か
比較式かの区別は構文解析段階で確定するはずだがね。
で、両方に解釈できるケースは基本的に非templateとみなすことになっていて、そこで
テンプレートを使用したいならばtenplateキーワードを追加する。
どのテンプレートが使われるかの判断は意味解析だろうけど、テンプレートの使用か
比較式かの区別は構文解析段階で確定するはずだがね。
で、両方に解釈できるケースは基本的に非templateとみなすことになっていて、そこで
テンプレートを使用したいならばtenplateキーワードを追加する。
137デフォルトの名無しさん
2020/08/23(日) 18:14:03.07ID:PNDTq65a >>136
>両方に解釈できるケースは基本的に非templateとみなすことになっていて、
それだと構文解析時のBNFの当てはめ時点でバックトラックしているように読めてしまうま、
そのような方式は、テンプレート定義が入れ子になったときバックトラック回数が指数関数的になりかねないから近畿
実際はそんなことはせずに、「name」というテンプレートの定義が辞書にあれば、「name」とかかれたソースコードの部分が
<テンプレート名>という字句として文法パーサに入力される、という方式で実現しており、
字句解析→文法解析、の一本道が保たれているはず(つまりは>>128のやり方
>>134
辞書の参照が難しい、と仰せなのですが
識別子のスコープを辞書の階層化で表現するのは常套手段であってコンパイラの教科書にも書いてある
(と思う)のでそんなに難しい話とはみなすことはできない(希ガス
>両方に解釈できるケースは基本的に非templateとみなすことになっていて、
それだと構文解析時のBNFの当てはめ時点でバックトラックしているように読めてしまうま、
そのような方式は、テンプレート定義が入れ子になったときバックトラック回数が指数関数的になりかねないから近畿
実際はそんなことはせずに、「name」というテンプレートの定義が辞書にあれば、「name」とかかれたソースコードの部分が
<テンプレート名>という字句として文法パーサに入力される、という方式で実現しており、
字句解析→文法解析、の一本道が保たれているはず(つまりは>>128のやり方
>>134
辞書の参照が難しい、と仰せなのですが
識別子のスコープを辞書の階層化で表現するのは常套手段であってコンパイラの教科書にも書いてある
(と思う)のでそんなに難しい話とはみなすことはできない(希ガス
138デフォルトの名無しさん
2020/08/23(日) 18:17:01.07ID:PNDTq65a ※ 個人の感想です
139デフォルトの名無しさん
2020/08/23(日) 19:31:26.00ID:OrwVzT4b <=>演算子はどうなん
140デフォルトの名無しさん
2020/08/23(日) 20:00:57.91ID:L0YhmUmF 面白そうな議論だけど忙しくて参加できない(泣
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★2 [七波羅探題★]
- 【芸能】デパートで見つけたランドセルが衝撃価格! つまみ枝豆「どこかで規制しないと」に共感の声殺到 「全て同感」「高すぎますね」 [冬月記者★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は [蚤の市★]
- 【速報】年収の壁の自民案判明、26年は168万円 [蚤の市★]
- 「ワールドトリガー」原作1話から完全新作アニメ化、よりパワーアップした1stシーズンとして [爆笑ゴリラ★]
- 自ら「パンセクシュアル」だと明かし、東由貴・東京都議(立憲民主)が「パートナーシップ」施策の充実求める:東京新聞 [少考さん★]
- お昼のまったり🍵😶‍🌫🤏すこすこハウス🏡
- ネトウヨ「中国ロシアとの戦争?日本にはアメリカがついてるので100%勝ちますよ」 [165981677]
- 【悲報】高市政権、中国軍機のレーダー照射について国際社会に発信へ [115996789]
- 「ミニトマトがボウルに入ってるから使ったら残りはラップして輪ゴムしといてー」👉アスペ系旦那、とんでもない行動に出てしまう [242521385]
- 外人激怒「日本のアニメのヒロインは"白人"はいるのに黒人はいない」 [793833473]
- 【超絶悲報】玉川徹、反日売国奴。「レーダー照射問題は高市さんの台湾有事答弁から始まった。中国をいたずらに刺激しても何も得はない」 [519511584]
