エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
探検
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
>>5
就職の話はよくわかりません
ただ、C89=K&R2 → C99 の改定内容は、C89 の時代に試みられていた拡大解釈を規格に取り込んだ、という部類が多いと私は思いました
それに C99 は、「C++ を見た後で決めたんかい?」という謎な部分が多くいけ好かないのも事実です、あんなものは知らないほうがいい部類でしょう
それよりも日々進化し続ける C++ をフォローするほうが、いろいろな面でお得です、私も p-thread 系マルチコアなプログラムを記述するために C++11 or lator に進み、とても満足しています
就職の話はよくわかりません
ただ、C89=K&R2 → C99 の改定内容は、C89 の時代に試みられていた拡大解釈を規格に取り込んだ、という部類が多いと私は思いました
それに C99 は、「C++ を見た後で決めたんかい?」という謎な部分が多くいけ好かないのも事実です、あんなものは知らないほうがいい部類でしょう
それよりも日々進化し続ける C++ をフォローするほうが、いろいろな面でお得です、私も p-thread 系マルチコアなプログラムを記述するために C++11 or lator に進み、とても満足しています
2019/04/30(火) 18:05:48.04ID:arIi2u2B
>>5
C++のクラスとかテンプレートとかSTLとかをとりあえず無視して
Cと共通してる基礎的なとこから学べば、わざわざCを個別に学ぶ必要はないとおも
仕事の場合は純粋にCだけ長年使ってるような特殊な職場でなければ問題ない
C++のクラスとかテンプレートとかSTLとかをとりあえず無視して
Cと共通してる基礎的なとこから学べば、わざわざCを個別に学ぶ必要はないとおも
仕事の場合は純粋にCだけ長年使ってるような特殊な職場でなければ問題ない
2019/04/30(火) 18:11:55.63ID:hc3e5D+8
お二人方ありがとうございます
CからC++の勉強に専念する決心が半分くらいつきました
Cのscanf()の仕様(バッファオーバーフローやバッファオーバーランの危険性を回避するいくつかの方法について等)、まだはっきりと把握していないのですが、それでも、C++の勉強に専念してしまっても問題ありませんでしょうか?
CからC++の勉強に専念する決心が半分くらいつきました
Cのscanf()の仕様(バッファオーバーフローやバッファオーバーランの危険性を回避するいくつかの方法について等)、まだはっきりと把握していないのですが、それでも、C++の勉強に専念してしまっても問題ありませんでしょうか?
2019/04/30(火) 19:25:08.89ID:YvhWBPAF
2019/04/30(火) 21:07:24.59ID:tJFiug19
C問題は使う言語の問題じゃないな
もちろんc++やJavaの方がC言語よりもスムーズに書けるがC問題はアルゴリズムを知らないと出来ない
それと現代ではC言語のscanfに習熟する意味は無い
それは後回しにした方がいい
もちろんc++やJavaの方がC言語よりもスムーズに書けるがC問題はアルゴリズムを知らないと出来ない
それと現代ではC言語のscanfに習熟する意味は無い
それは後回しにした方がいい
2019/04/30(火) 21:38:58.06ID:B5WLnK8N
2019/04/30(火) 21:41:18.36ID:B5WLnK8N
_s 系関数でも未定義な挙動を示すコードはいくらでも書けるのでキリがないんじゃね
詳細な資料はあるけれども、入門者が読むもんじゃなし
fgets + sscanf で安全になるわけでもなし
詳細な資料はあるけれども、入門者が読むもんじゃなし
fgets + sscanf で安全になるわけでもなし
>>8
まあ他の人の意見も聴いておいたほうがいいでしょうね
個人的には何をやっても C で書けると「思える」感触ができるまで C で書きまくる経験は有用だろうと思います、時間はかかりますけれども何でも自分で実装する、という縛りを課してみる
データ構造(線形リスト、スタックやキュー、二分木やバランス木・K-dimensionなどのデータ構造)
アルゴリズム(ヒープ/クィック/シェル各種ソート、縦横探索やダイクストラ法と枝刈り・バックトラッキング、ナップサック、シンプレックス法、シャノンファノやハフマン)
いやもう、C なら何をやってもいい経験になりますね…
まあ他の人の意見も聴いておいたほうがいいでしょうね
個人的には何をやっても C で書けると「思える」感触ができるまで C で書きまくる経験は有用だろうと思います、時間はかかりますけれども何でも自分で実装する、という縛りを課してみる
データ構造(線形リスト、スタックやキュー、二分木やバランス木・K-dimensionなどのデータ構造)
アルゴリズム(ヒープ/クィック/シェル各種ソート、縦横探索やダイクストラ法と枝刈り・バックトラッキング、ナップサック、シンプレックス法、シャノンファノやハフマン)
いやもう、C なら何をやってもいい経験になりますね…
2019/05/03(金) 11:34:54.23ID:Gwp1b6R4
いまどきの環境だと下部に丸投げか
2019/05/03(金) 14:13:46.95ID:xL3yQoTR
関数の引数の書き方について質問があります。
任意のオブジェクトを複数参照する関数f(A& a, B& b, ......)
において、引数の a,b,...を左辺値と右辺値の任意の組み合わせで
使用する場合、関数定義をf(const A& ac, const B& bc, ......){
A &a=const_cast<A&>(ac);
B &b=const_cast<B&>(bc);
:
}
とする方法がベストでしょうか?
任意のオブジェクトを複数参照する関数f(A& a, B& b, ......)
において、引数の a,b,...を左辺値と右辺値の任意の組み合わせで
使用する場合、関数定義をf(const A& ac, const B& bc, ......){
A &a=const_cast<A&>(ac);
B &b=const_cast<B&>(bc);
:
}
とする方法がベストでしょうか?
2019/05/03(金) 14:32:25.70ID:qNybD7B2
だめ
2019/05/03(金) 14:34:29.48ID:xL3yQoTR
15です。
追記します。
開発系のIDEでオブジェクトのメンバー変数を表示させながら
プログラム作成をしたいので、テンプレート関数化による
ユニバーサル参照の記述は使いたくありません。
追記します。
開発系のIDEでオブジェクトのメンバー変数を表示させながら
プログラム作成をしたいので、テンプレート関数化による
ユニバーサル参照の記述は使いたくありません。
18はちみつ餃子 ◆8X2XSCHEME
2019/05/03(金) 21:34:51.81ID:Oy2+74/H >>15
控えめに言ってクソ。 本当に const なオブジェクトが渡されたときにエラーにならない。
const なオブジェクトに const でない操作をするのは未定義だぞ。
(const ではないオブジェクトなら途中で const を経由しても書き換えて良いらしい。)
言語の作法の範囲内でなら IDE に対する配慮は工夫として評価されるかもしれないけど、
型システムによる保護を台無しにしてまでやるのはオススメできない。
少なくともこのスレでそういう工夫を是とする人はあんまりいないと思うぞ。
控えめに言ってクソ。 本当に const なオブジェクトが渡されたときにエラーにならない。
const なオブジェクトに const でない操作をするのは未定義だぞ。
(const ではないオブジェクトなら途中で const を経由しても書き換えて良いらしい。)
言語の作法の範囲内でなら IDE に対する配慮は工夫として評価されるかもしれないけど、
型システムによる保護を台無しにしてまでやるのはオススメできない。
少なくともこのスレでそういう工夫を是とする人はあんまりいないと思うぞ。
2019/05/03(金) 21:43:10.16ID:16FcdCX4
Arduinoなんだけど多分C一般の話だと思うんでここで
byte counter = 0;
while (true) {
if (Shori(counter)) { break; } // Shoriの結果によってwhileから脱出
if (counter < 4) { counter++; }
else { counter = 0; }
}
または
for (byte counter = 0; counter <= 4; counter++) {
if (Shori(counter)) { break; } // Shoriの結果によってforから脱出
if (counter == 4) { counter = 255; }
}
または
for (byte counter = 0; true; counter++) {
if (Shori(counter % 5)) { break; } // Shoriの結果によってforから脱出
// これだとcounterが255から0になるときcounter % 5が2回連続して0になるため
// 0〜5を繰り返し引数にしてShoriしていることにならない
}
または
while (true) {
for (byte counter = 0; counter <= 4; counter++) {
if (Shori(counter)) { goto dasshutu; } // Shoriの結果によってforとwhileから脱出
}
}
dasshutu:
みたいに一定の範囲を繰り返すカウンタを持つ無限ループってどう書くのがシンプルで一般的なんだろう?
無限ループとはいっても256回も回らずに終わる見込みだから3つ目の書き方でいい(仮にそれを越えても処理内容的に致命的な問題はない)とか、念のためwordにしとけば65536回まではいけるとか考えてもいいのかな
byte counter = 0;
while (true) {
if (Shori(counter)) { break; } // Shoriの結果によってwhileから脱出
if (counter < 4) { counter++; }
else { counter = 0; }
}
または
for (byte counter = 0; counter <= 4; counter++) {
if (Shori(counter)) { break; } // Shoriの結果によってforから脱出
if (counter == 4) { counter = 255; }
}
または
for (byte counter = 0; true; counter++) {
if (Shori(counter % 5)) { break; } // Shoriの結果によってforから脱出
// これだとcounterが255から0になるときcounter % 5が2回連続して0になるため
// 0〜5を繰り返し引数にしてShoriしていることにならない
}
または
while (true) {
for (byte counter = 0; counter <= 4; counter++) {
if (Shori(counter)) { goto dasshutu; } // Shoriの結果によってforとwhileから脱出
}
}
dasshutu:
みたいに一定の範囲を繰り返すカウンタを持つ無限ループってどう書くのがシンプルで一般的なんだろう?
無限ループとはいっても256回も回らずに終わる見込みだから3つ目の書き方でいい(仮にそれを越えても処理内容的に致命的な問題はない)とか、念のためwordにしとけば65536回まではいけるとか考えてもいいのかな
2019/05/03(金) 22:05:03.91ID:VZjV/dE9
for (byte counter = 0; ; counter = (counter + 1) % 5) {
if (Shori(counter)) { break; }
}
とか?
if (Shori(counter)) { break; }
}
とか?
2019/05/03(金) 22:23:08.93ID:16FcdCX4
おおそんな書き方が。ありがたい。
しかも脱出に関して言えば、forの中でifで判定してbreakするのではなく
forの条件式に書いてしまうこともできるな…
しかも脱出に関して言えば、forの中でifで判定してbreakするのではなく
forの条件式に書いてしまうこともできるな…
2019/05/04(土) 04:03:12.91ID:qzgt3pmZ
オブジェクト指向でなぜつくるのか
って書籍が今Kindleセールで半額だけど良さそうだな
読んだことある人どんな感想ですか?
って書籍が今Kindleセールで半額だけど良さそうだな
読んだことある人どんな感想ですか?
23デフォルトの名無しさん
2019/05/05(日) 03:51:38.18ID:NRm/lXtt >>22
じゃんけんゲームを2人(自分対PC)用から(PCを)何人でも増やせる設計に変える例で
構造化プログラミングだとちょっと書き換え多そう。。。オブジェクト指向プログラミングなら〜って感じ。
(そこしか覚えてないとも言う)
第2版は最終章でオブジェクト指向プログラミングの次世代は関数型プログラミングだとか言ってHaskellの紹介が追加された。
じゃんけんゲームを2人(自分対PC)用から(PCを)何人でも増やせる設計に変える例で
構造化プログラミングだとちょっと書き換え多そう。。。オブジェクト指向プログラミングなら〜って感じ。
(そこしか覚えてないとも言う)
第2版は最終章でオブジェクト指向プログラミングの次世代は関数型プログラミングだとか言ってHaskellの紹介が追加された。
2019/05/05(日) 11:14:43.13ID:P7bsB8ff
皆さんが一番勉強になった本を教えてほしいです。
これならわかるC++と、C言語ポインタ完全制覇は持ってるので、基本的なことはわかります。
これ読んで実力がバズった!というのがあればぜひとも。
これならわかるC++と、C言語ポインタ完全制覇は持ってるので、基本的なことはわかります。
これ読んで実力がバズった!というのがあればぜひとも。
>>24
C++ ならハーバート・シルトの独習C++ ですね
その真ん中くらいにある「std::string を自分で実装する」というお題が非常によく、OO の教科書でそういうお題を配置しているのも本質を明示している意味でよく、この本より優れている初級C++教科書がみあたりません
C++ ならハーバート・シルトの独習C++ ですね
その真ん中くらいにある「std::string を自分で実装する」というお題が非常によく、OO の教科書でそういうお題を配置しているのも本質を明示している意味でよく、この本より優れている初級C++教科書がみあたりません
2019/05/05(日) 11:43:07.96ID:qZTOu8es
C言語を256倍使うための本
ttps://www.amazon.co.jp/dp/4756100430
ttps://www.amazon.co.jp/dp/4756100430
2019/05/05(日) 19:46:41.25ID:P7bsB8ff
>>25-26
ありがとうございます。参考にします。
ありがとうございます。参考にします。
28はちみつ餃子 ◆8X2XSCHEME
2019/05/05(日) 20:24:31.00ID:TxpPZKKr >>24
私が学んだのは「詳説 C++ 第2版」だな。
https://www.amazon.co.jp/dp/479732743X
この本の内容は C++03 の時代のものなので C++11 以降のトピックはウェブで学んだ。
Twitter で C++ に強い人が独習C++の間違いを強く批判しているのを見ることがちょいちょいあるので、
自分では読んだことが無いけど独習C++には良い印象がない。
まあ不正確でもわかりやすいことは有りうるのでとりあえずおおざっぱな概略を把握する分には
どれでも割となんとかなる気がしている。
私が学んだのは「詳説 C++ 第2版」だな。
https://www.amazon.co.jp/dp/479732743X
この本の内容は C++03 の時代のものなので C++11 以降のトピックはウェブで学んだ。
Twitter で C++ に強い人が独習C++の間違いを強く批判しているのを見ることがちょいちょいあるので、
自分では読んだことが無いけど独習C++には良い印象がない。
まあ不正確でもわかりやすいことは有りうるのでとりあえずおおざっぱな概略を把握する分には
どれでも割となんとかなる気がしている。
>>28
>独習C++の間違いを強く批判している
話を簡単にするために、一時的に紛らわしいことを言っている=どこを切っていも正しいというわけではない=文脈依存なところがある、という批判はアマゾンレビューにありましたね
しかし強く批判されるほどの欠点があるかどうかは、私にはよくわかりません
よろしければポインタをください
>独習C++の間違いを強く批判している
話を簡単にするために、一時的に紛らわしいことを言っている=どこを切っていも正しいというわけではない=文脈依存なところがある、という批判はアマゾンレビューにありましたね
しかし強く批判されるほどの欠点があるかどうかは、私にはよくわかりません
よろしければポインタをください
30はちみつ餃子 ◆8X2XSCHEME
2019/05/05(日) 21:21:05.73ID:TxpPZKKr >>29
良い評価も悪い評価もあるので単純には言えないけど、批判している代表的な意見としてはこれかな。
https://twitter.com/yumetodo/status/1020966071702966273
ただ、全体として入門書として本当に妥当な本があまりないので、どれが比較的マシなのかというレベルの話だと思う。
私が読んだことがない中で評判を評価するとたぶん江添氏の出している本が (少なくとも日本語の本の中では)
だいぶん良さそうでは有る。
速度のある分野では、単純に古いものはそれだけで価値が低いので、
逆に言えば最新に追い付こうとしているものは高く評価できる。
https://twitter.com/5chan_nel (5ch newer account)
良い評価も悪い評価もあるので単純には言えないけど、批判している代表的な意見としてはこれかな。
https://twitter.com/yumetodo/status/1020966071702966273
ただ、全体として入門書として本当に妥当な本があまりないので、どれが比較的マシなのかというレベルの話だと思う。
私が読んだことがない中で評判を評価するとたぶん江添氏の出している本が (少なくとも日本語の本の中では)
だいぶん良さそうでは有る。
速度のある分野では、単純に古いものはそれだけで価値が低いので、
逆に言えば最新に追い付こうとしているものは高く評価できる。
https://twitter.com/5chan_nel (5ch newer account)
2019/05/05(日) 22:04:35.25ID:vipN53in
俺「競プロ飽きたしC++の勉強でもするか」
isocpp.org「まずはTourofC++で概要をつかむといいよ〜」
ビャーネ「Tourはプログラミングに習熟した人を想定している」
俺「短くて面白いけど難しいな。プログラミング初心者向けのはないかな?」
isocpp「じゃあこれ つ原則と実践(1248ページ)」
俺「ファッ!?」
isocpp「あと勉強するときは少なくとも3冊持っといたほうがいいよ〜」
俺「ウーン…」
isocpp.org「まずはTourofC++で概要をつかむといいよ〜」
ビャーネ「Tourはプログラミングに習熟した人を想定している」
俺「短くて面白いけど難しいな。プログラミング初心者向けのはないかな?」
isocpp「じゃあこれ つ原則と実践(1248ページ)」
俺「ファッ!?」
isocpp「あと勉強するときは少なくとも3冊持っといたほうがいいよ〜」
俺「ウーン…」
>>30
毒臭を有害ゴミと判断した理由が知りたいですね…
個人的には、C++ の中の Java に似た部分を抽出して、初心者(最近は C++ に直接参入する人が多いとか…なんか時代を感じます)にやさしい、できれば分厚くない本がいいなあ
以前は accelerated C++ を薦めたりしたのですが、最近 accelerated c++ の決定的に駄目なところを見つけてしまったので、もう私が薦める本は独習しかないのでした
毒臭を有害ゴミと判断した理由が知りたいですね…
個人的には、C++ の中の Java に似た部分を抽出して、初心者(最近は C++ に直接参入する人が多いとか…なんか時代を感じます)にやさしい、できれば分厚くない本がいいなあ
以前は accelerated C++ を薦めたりしたのですが、最近 accelerated c++ の決定的に駄目なところを見つけてしまったので、もう私が薦める本は独習しかないのでした
2019/05/05(日) 22:37:15.85ID:RPhfdkos
>>32
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な
2019/05/05(日) 22:39:39.67ID:RPhfdkos
途中だった。
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な発言をしてきたかのような印象操作は卑怯だとは思わないか?
有害ゴミなどど、相手が使ってない言葉に勝手に置き換えて、さも相手が感情的で非論理的な発言をしてきたかのような印象操作は卑怯だとは思わないか?
>>33
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
使っていますが…
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
使っていますが…
https://twitter.com/5chan_nel (5ch newer account)
>>34
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
印象操作などではありえず、ずばり「有害ゴミ」指定されちゃってますが…
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/yumetodo/status/1020966071702966273
>言うまでもなく独習C++は時代遅れの化石で有害ゴミ行き。
印象操作などではありえず、ずばり「有害ゴミ」指定されちゃってますが…
https://twitter.com/5chan_nel (5ch newer account)
2019/05/05(日) 22:42:08.10ID:RPhfdkos
>>36
twitterの方は見てなかった。失礼した。
twitterの方は見てなかった。失礼した。
2019/05/05(日) 23:27:07.88ID:DzyvOKLj
プログラミングの最初の一歩すらわからない状態から始めるのか
Pythonやjsやphpなんかである程度書ける状態から始めるのかで話が変わると思う
後者ならググりながら適当になんか書いてみればいいと思う
Pythonやjsやphpなんかである程度書ける状態から始めるのかで話が変わると思う
後者ならググりながら適当になんか書いてみればいいと思う
40はちみつ餃子 ◆8X2XSCHEME
2019/05/05(日) 23:57:02.81ID:TxpPZKKr2019/05/06(月) 01:21:26.82ID:oGUqqIoM
C++に関してググって出てくる情報って適当なの多いよなw
Qなんとかとか特にw
Qなんとかとか特にw
2019/05/06(月) 04:37:01.34ID:z7Cz8mZC
どうも最近は最新のC++の機能を使うべきだとしつつ
自分なりにとりあえず適当に書くのは危険とか言う意見が多いけど
人間もあくまで動物なので手を動かして書かなきゃ覚えないしCの時代から続く古臭い書き方は長年の積み重ねでセオリー確立してんだから
そういう学習方法を否定するのは違うと思うよ
クラス、ひいては最新の機能を正しく使う、なんて初心者がいきなり目指すようなことじゃない
自分なりにとりあえず適当に書くのは危険とか言う意見が多いけど
人間もあくまで動物なので手を動かして書かなきゃ覚えないしCの時代から続く古臭い書き方は長年の積み重ねでセオリー確立してんだから
そういう学習方法を否定するのは違うと思うよ
クラス、ひいては最新の機能を正しく使う、なんて初心者がいきなり目指すようなことじゃない
2019/05/06(月) 06:08:09.39ID:Geq8Gq1G
>>42
手を動かして覚えることは誰も否定していないし、むしろそれは強く推奨したい。ただ、C/C++の場合は表面的な理解だけで動いたから良しとして進むのは危険で、基本的な部分は正しく理解しておくことは必要だと思う。
ある程度の基礎がある状態なら、新しい機能やライブラリの関数もググって得られる情報から正しい仕様を理解して習得できるが、基礎ができていない状態でそれは難しい。
初心者がとりあえず適当に切り貼りして動かそうというやり方をするなら、他の言語から入った方がいいと思う。ググって調べた断片的な情報だけでなく入門書等で基礎を押さえつつ、実際に書いて愚直に挙動を確認しながら理解をしていくのが良いと思う。
手を動かして覚えることは誰も否定していないし、むしろそれは強く推奨したい。ただ、C/C++の場合は表面的な理解だけで動いたから良しとして進むのは危険で、基本的な部分は正しく理解しておくことは必要だと思う。
ある程度の基礎がある状態なら、新しい機能やライブラリの関数もググって得られる情報から正しい仕様を理解して習得できるが、基礎ができていない状態でそれは難しい。
初心者がとりあえず適当に切り貼りして動かそうというやり方をするなら、他の言語から入った方がいいと思う。ググって調べた断片的な情報だけでなく入門書等で基礎を押さえつつ、実際に書いて愚直に挙動を確認しながら理解をしていくのが良いと思う。
>>42
>人間もあくまで動物なので手を動かして書かなきゃ覚えないし
プログラミングは特に、自分で書いて書いて書きまくって読んでというところは同意
となれば、ちょっと書く気になろうという心の動きを、分厚い教科書で潰したくない、という趣旨は理解
さて、困ったものです、そういうときに使える教科書があればいいのですが、C/C++ の教科書って高くて分厚いですからね…私もメイヤーズはまだ積読だし、いつ読む気になるかな?
>人間もあくまで動物なので手を動かして書かなきゃ覚えないし
プログラミングは特に、自分で書いて書いて書きまくって読んでというところは同意
となれば、ちょっと書く気になろうという心の動きを、分厚い教科書で潰したくない、という趣旨は理解
さて、困ったものです、そういうときに使える教科書があればいいのですが、C/C++ の教科書って高くて分厚いですからね…私もメイヤーズはまだ積読だし、いつ読む気になるかな?
2019/05/06(月) 13:27:09.96ID:MWPsBkkn
300ページ未満の入門書…
2019/05/06(月) 13:46:12.30ID:z7Cz8mZC
まぁ確かにサンプルコードの切り貼りとかは危ないだろうしネットの情報だけってのはね
でも独習みたいな古臭い(03以前)入門書なんて初心者にうってつけだと思うんだけど
・・・って、twitterでこき下ろしてる奴のアカウント名に見覚えあるわw
そいつ勘違いの激しい学生ちゃんだから言ってること真に受けない方がいい
でも独習みたいな古臭い(03以前)入門書なんて初心者にうってつけだと思うんだけど
・・・って、twitterでこき下ろしてる奴のアカウント名に見覚えあるわw
そいつ勘違いの激しい学生ちゃんだから言ってること真に受けない方がいい
2019/05/06(月) 16:16:47.15ID:yQTWUAYp
isocppで推薦されてる原則と実践の前の版がたまたま
近くの図書館にあったから読んでみたけど、意外と面白いな。
近くの図書館にあったから読んでみたけど、意外と面白いな。
48はちみつ餃子 ◆8X2XSCHEME
2019/05/06(月) 16:19:28.55ID:K/rO19sE >>46 見つけられなかったので比較的に新しいやつの中から探して一例として出したけど、
そやつひとりだけが言ってるわけじゃないよ。 良いと評価している人も当然いるんだけど、
あくまで私の観測範囲で私が総合的に感じた漠然敵な印象の話なんで。
そやつひとりだけが言ってるわけじゃないよ。 良いと評価している人も当然いるんだけど、
あくまで私の観測範囲で私が総合的に感じた漠然敵な印象の話なんで。
49はちみつ餃子 ◆8X2XSCHEME
2019/05/06(月) 16:20:48.53ID:K/rO19sE 今の時点でそれなりに C/C++ をわかるようになっている人の思う「良い本」というのは
「昔に学んだ」という体験だからさ、今から学ぶという人の事情とはやっぱり時代が違うと思う。
自分が読んだ本を言えても、それを強く勧めるほどの自信はないな。
例えば私が最初に買った C++ 本は ARM なんで、これにはいわゆる STL さえ載ってないんだけど、
当時としては妥当な選択肢だったし、十分にわかりやすかった。
でももちろん、今の時代に ARM を勧めるなんて馬鹿馬鹿しくてあり得ないでしょ。
昔の C++ を身に着けてから徐々に知識を更新してきていると昔の C++ と今の C++ が
滑らかに繋がっているように錯覚してしまうけど、昔の C++ を学んでから今の C++ というのは
結構な飛躍があると思うんだよ。
今から学ぶなら C++11 程度は想定している本の方がいいんじゃないかな、と個人的には思う。
「昔に学んだ」という体験だからさ、今から学ぶという人の事情とはやっぱり時代が違うと思う。
自分が読んだ本を言えても、それを強く勧めるほどの自信はないな。
例えば私が最初に買った C++ 本は ARM なんで、これにはいわゆる STL さえ載ってないんだけど、
当時としては妥当な選択肢だったし、十分にわかりやすかった。
でももちろん、今の時代に ARM を勧めるなんて馬鹿馬鹿しくてあり得ないでしょ。
昔の C++ を身に着けてから徐々に知識を更新してきていると昔の C++ と今の C++ が
滑らかに繋がっているように錯覚してしまうけど、昔の C++ を学んでから今の C++ というのは
結構な飛躍があると思うんだよ。
今から学ぶなら C++11 程度は想定している本の方がいいんじゃないかな、と個人的には思う。
>>49
> C++11 程度は想定している本の方がいいんじゃないかな
しかし、C++03 までのからくりをしらずして、C++11 のあれこれを理解できるかな?とも思うのです、ranged for の for(auto &item; vec) の & の意味とか…これはあんがい簡単にクリアできるのやもしれませんけど
> C++11 程度は想定している本の方がいいんじゃないかな
しかし、C++03 までのからくりをしらずして、C++11 のあれこれを理解できるかな?とも思うのです、ranged for の for(auto &item; vec) の & の意味とか…これはあんがい簡単にクリアできるのやもしれませんけど
2019/06/13(木) 17:42:42.66ID:KieG+j09
テンプレート特殊化を前方宣言したいんだけど、
コンパイルエラーが出て詰んでるんですけど、
どうやればいいですか?
例えば以下のようなことがしたいんですが。
template<class T>
struct A {};
template<>
struct A<int>;
template<>
struct A<float> {
A<int> f() { //エラー : 認識できない型A<int>が使われいます。
return A<int>{};
}
};
template<>
struct A<int> {
int value;
};
コンパイルエラーが出て詰んでるんですけど、
どうやればいいですか?
例えば以下のようなことがしたいんですが。
template<class T>
struct A {};
template<>
struct A<int>;
template<>
struct A<float> {
A<int> f() { //エラー : 認識できない型A<int>が使われいます。
return A<int>{};
}
};
template<>
struct A<int> {
int value;
};
2019/06/13(木) 23:30:30.78ID:CsiJtfL2
54デフォルトの名無しさん
2019/06/18(火) 08:26:42.73ID:YBHtdulC 入門書の入力された文字列が同じかどうかを判断するコードなのですが
https://ideone.com/vaASOS
14行目のif(str1[i]!=str2[i])break;がどういう意味なのかさっぱり理解できません
文字コードが同じじゃなければbreakッて意味ですか?
len+1してるのも意味がわからないです・・・
説明よろしくお願い致しますm(_ _)m
https://ideone.com/vaASOS
14行目のif(str1[i]!=str2[i])break;がどういう意味なのかさっぱり理解できません
文字コードが同じじゃなければbreakッて意味ですか?
len+1してるのも意味がわからないです・・・
説明よろしくお願い致しますm(_ _)m
55デフォルトの名無しさん
2019/06/18(火) 09:08:30.02ID:Sq2beh5p 文字コードが同じじゃなければbreakということでいいんじゃない?
len+1しているのはヌル文字があるから
len+1しているのはヌル文字があるから
2019/06/18(火) 09:20:54.17ID:R6plNfEa
まず配列について勉強だね
デバッガのステップ実行で追っていくといいよ
デバッガのステップ実行で追っていくといいよ
57デフォルトの名無しさん
2019/06/18(火) 09:21:46.85ID:3nOE2mBA プログラム板の精神病コテ 松本卓朗 さん殺害予告!
https://mevius.5ch.net/test/read.cgi/tech/1560808598/
https://mevius.5ch.net/test/read.cgi/tech/1560808598/
2019/06/18(火) 11:28:13.79ID:uO3416eX
文字列が同じ = 1文字1文字全部同じ = 1文字でも違えば違う
strlenは文字数を返すけど最後の\0を含まない
最後の\0まで比較しないと入力した文字列と先頭部分が一致したら一致してしまうのでlen+1
strlenは文字数を返すけど最後の\0を含まない
最後の\0まで比較しないと入力した文字列と先頭部分が一致したら一致してしまうのでlen+1
2019/06/18(火) 11:38:40.31ID:YX5RP0uz
文字列長の短いほうを len としないと突破したところを参照してまうぞ
str1 = asd\0
str2 = asdf\0
で str2 の len+1 まで str1 を参照すると嘔吐
str1 = asd\0
str2 = asdf\0
で str2 の len+1 まで str1 を参照すると嘔吐
2019/06/18(火) 11:39:47.81ID:YX5RP0uz
まぁ 文字列長がちがったら いきなり不一致って脱出してもいいんだけどね
2019/06/18(火) 11:50:07.19ID:uzZY1452
https://ideone.com/JUWWBr
分かり易くなったゾ
変数を減らせばラク
lenで判定してるイマイチな書き方を排除すればもっとラク
要するに分かりにくく書いてるから分かりにくいだけだよ
分かり易くなったゾ
変数を減らせばラク
lenで判定してるイマイチな書き方を排除すればもっとラク
要するに分かりにくく書いてるから分かりにくいだけだよ
2019/06/18(火) 12:00:25.27ID:YX5RP0uz
元々は入門書に書かれてたコードか
むむむ
むむむ
2019/06/18(火) 12:36:36.95ID:uzZY1452
ループを再帰に直せば終了条件がもっと分かり易くなるゾ
再帰にして時系列の1段階ずつ見せればその1段階ごとにどういう判断してるか分かり易いでしょ
bool scr(char* p, char* q){//string compare recursive
if( *p == '\0' || *q == '\0' ){
if( *p == *q ){
return true;
}
return false;
}
if( *p != *q ){
return false;
}
return scr(p+1, q+1);
}
元のヤツは文字コードと文字列の長さがこんがらがってぐちゃぐちゃになってるから分かりにくいんだなコレ
同じ文字列かどうかを、「文字コードが同じか」と「文字列の長さはどうか」、この二つで判断してるでしょ
判定するのに全く別の二つのものを取り扱ってるから分かりにくいんだよ
forのカウンタのiの取り扱いも分かりにくい
文字列長さの境界の+1の有無も分かりにくい
文字コードが同じじゃなければbreakしてlenで判定、すんごく分かりにくいでしょ
何せ「文字コードが同じじゃなければbreak」、その通りなんだけど「意味が理解できない」と来てる、意味が分かってるのに「分からん」と言ってるワケだ
結局はbreakしてるはiのカウントを止めるためと、lenと比較するためにforのスコープ超えた場所でiの値を参照するため
これ入門書の前段階までにfor文の外側でiの値を参照してる例がないと詰まる箇所だよ
for文の外側でiの値を使う、この意味が分からんと「文字コードが同じじゃなければbreak」まで分かってても全体が分からないようになってる
再帰にして時系列の1段階ずつ見せればその1段階ごとにどういう判断してるか分かり易いでしょ
bool scr(char* p, char* q){//string compare recursive
if( *p == '\0' || *q == '\0' ){
if( *p == *q ){
return true;
}
return false;
}
if( *p != *q ){
return false;
}
return scr(p+1, q+1);
}
元のヤツは文字コードと文字列の長さがこんがらがってぐちゃぐちゃになってるから分かりにくいんだなコレ
同じ文字列かどうかを、「文字コードが同じか」と「文字列の長さはどうか」、この二つで判断してるでしょ
判定するのに全く別の二つのものを取り扱ってるから分かりにくいんだよ
forのカウンタのiの取り扱いも分かりにくい
文字列長さの境界の+1の有無も分かりにくい
文字コードが同じじゃなければbreakしてlenで判定、すんごく分かりにくいでしょ
何せ「文字コードが同じじゃなければbreak」、その通りなんだけど「意味が理解できない」と来てる、意味が分かってるのに「分からん」と言ってるワケだ
結局はbreakしてるはiのカウントを止めるためと、lenと比較するためにforのスコープ超えた場所でiの値を参照するため
これ入門書の前段階までにfor文の外側でiの値を参照してる例がないと詰まる箇所だよ
for文の外側でiの値を使う、この意味が分からんと「文字コードが同じじゃなければbreak」まで分かってても全体が分からないようになってる
2019/06/18(火) 12:55:58.74ID:GYXVYwQo
ポインタを知らないであろう初学者にポインタ演算を使って分かりやすいとする鬼畜の所業
2019/06/18(火) 16:53:31.85ID:eB4Ftz1Y
>>57~63回答ありがとうございます
説明下手でスイマセン。このコードが書いてある前のページに文字列の比較は出来ないため
str1==str2と書いて判定は出来ないと書いてあったのに
14行目でstr1[i]!=str2[2]で判定してるのがよくわからないです
strlenは\0返さないのですね。そこはスッキリしました。ありがとうございます
説明下手でスイマセン。このコードが書いてある前のページに文字列の比較は出来ないため
str1==str2と書いて判定は出来ないと書いてあったのに
14行目でstr1[i]!=str2[2]で判定してるのがよくわからないです
strlenは\0返さないのですね。そこはスッキリしました。ありがとうございます
2019/06/18(火) 18:05:58.84ID:U3/WUc9c
2019/06/18(火) 18:50:13.29ID:ujoReLWG
2019/06/18(火) 19:28:14.92ID:U/JJd+xv
>>59
馬鹿なの?
馬鹿なの?
2019/06/18(火) 20:04:16.08ID:ADibu3ht
きゃー はずかしい><
70デフォルトの名無しさん
2019/06/18(火) 22:39:27.24ID:R4l3qwnJ int a = b - 1;
if (a < 0){
a = 0;
}
これのスマートな書き方を教えてください。
if (a < 0){
a = 0;
}
これのスマートな書き方を教えてください。
2019/06/18(火) 22:45:19.63ID:BC11WozD
ここで聞いていいのかわからないけど
組み込み系で上位割り込みでライト、下位割り込みでリードする場合割り込み禁止する必要ありますか?
組み込み系で上位割り込みでライト、下位割り込みでリードする場合割り込み禁止する必要ありますか?
2019/06/18(火) 23:11:51.18ID:gZnFDsgJ
2019/06/18(火) 23:13:26.53ID:48k2aFsK
>>70
bの型が不明な場合はスマートな書き方は特に無い
bの型が不明な場合はスマートな書き方は特に無い
2019/06/18(火) 23:24:05.71ID:f34xyyaF
>>70
int a = b < 1 ? 0 : b - 1;
int a = b < 1 ? 0 : b - 1;
2019/06/18(火) 23:28:32.54ID:BC11WozD
>>72
何故ダメなのかが理解できてません。
書き忘れてましたが割り込みはタイマで周期的に発生させてます。
リード中にライトが発生しても下位割り込みは一周期遅れて上位割り込みのライト結果をリードするだけではないのですか?
何故ダメなのかが理解できてません。
書き忘れてましたが割り込みはタイマで周期的に発生させてます。
リード中にライトが発生しても下位割り込みは一周期遅れて上位割り込みのライト結果をリードするだけではないのですか?
2019/06/18(火) 23:45:23.52ID:gZnFDsgJ
>>75
writeの割り込みが発生するまではreadは進行するんじゃないの?
だから「readの途中で」なんだけど
「2つの割り込みは完全制御下にあり、read中にwriteは発生しない」なら大丈夫だよ、当然
writeの割り込みが発生するまではreadは進行するんじゃないの?
だから「readの途中で」なんだけど
「2つの割り込みは完全制御下にあり、read中にwriteは発生しない」なら大丈夫だよ、当然
2019/06/19(水) 00:02:23.61ID:/MswhT0Q
>>75
>リード中にライトが発生しても下位割り込みは一周期遅れて
ここがちょっと勘違いを感じる
割り込み処理が終わったら、割り込まれた処理の続きをするのよ
低レベルにDBのrollbackみたいな複雑な仕組みはないのよ
>リード中にライトが発生しても下位割り込みは一周期遅れて
ここがちょっと勘違いを感じる
割り込み処理が終わったら、割り込まれた処理の続きをするのよ
低レベルにDBのrollbackみたいな複雑な仕組みはないのよ
2019/06/19(水) 02:33:40.48ID:v2+76oWz
char型の動作がどうもわからない。
例えば
char str[] = "abc"; として
cout << &str[0]; ----> abc
になるのはなんで? index 0番だから a がでると思ったんだけど...
初心者ですまん
例えば
char str[] = "abc"; として
cout << &str[0]; ----> abc
になるのはなんで? index 0番だから a がでると思ったんだけど...
初心者ですまん
2019/06/19(水) 03:26:09.45ID:0DgdOBcz
2019/06/19(水) 05:18:40.21ID:xxgeB2IO
2019/06/19(水) 08:25:58.04ID:huda4IDC
2019/06/19(水) 09:03:32.83ID:bPRT+MIA
2019/06/19(水) 09:06:41.55ID:zjjAtQWn
ちなみに上位下位って割り込みの優先度のこと?
2019/06/19(水) 09:22:03.41ID:RukLP400
たとえ1命令でも安全かどうかはcpuによる
あいまいな質問にはあいまいな回答しか返らない
マニュアル読むのが正解
あいまいな質問にはあいまいな回答しか返らない
マニュアル読むのが正解
2019/06/19(水) 09:54:17.80ID:huda4IDC
86デフォルトの名無しさん
2019/06/19(水) 11:34:02.00ID:kjBiA8ae vector<std::vector<char> > vec;
の二次元配列で、一行を削除するのはどうしたらよいのでしょうか。
int row = 1;
vec.erase(vec.begin() + row );
ではだめなんでしょうか。
の二次元配列で、一行を削除するのはどうしたらよいのでしょうか。
int row = 1;
vec.erase(vec.begin() + row );
ではだめなんでしょうか。
87デフォルトの名無しさん
2019/06/19(水) 11:40:44.36ID:kjBiA8ae すみません。これでちゃんと動きました。
お騒がせしました。
お騒がせしました。
2019/06/19(水) 15:30:59.62ID:2x/CN7xY
>>70
int a = max(b - 1, 0);
というような書き方を見たことが有る。
int a = max(b - 1, 0);
というような書き方を見たことが有る。
2019/06/19(水) 20:53:07.15ID:RukLP400
2019/06/19(水) 23:49:00.15ID:v2+76oWz
91デフォルトの名無しさん
2019/06/23(日) 01:18:33.15ID:X4lwQ0L+ 学校の課題でバブルソートアルゴリズムを使った画像処理の課題で、VSの警告にfor-loopの定義が無効です:最初の条件はテストを満たしていません。ループボディは実行されませんと出てきます。これはどういった原因で出てくる警告なのか教えほしいです
2019/06/23(日) 01:30:30.52ID:xbroTRmV
ループの初期状態でループ終了条件を満たしている
2019/06/23(日) 01:31:24.99ID:xbroTRmV
単純化すればこういうこと
for (int i = 0; i < 0; i++)
for (int i = 0; i < 0; i++)
2019/06/23(日) 06:24:41.17ID:TKCAljQF
てst
95デフォルトの名無しさん
2019/06/23(日) 11:28:18.87ID:6GXr3JQp 最近BS/CSが映らなくなった人はここを見ると良い
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
https://mevius.5ch.net/test/read.cgi/avi/1560914909/1-100
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
https://mevius.5ch.net/test/read.cgi/avi/1560914909/1-100
96デフォルトの名無しさん
2019/06/24(月) 06:51:52.73ID:lwUqObiG FILE* file;
file=fopen("test.txt","w");
fclose(file);
これでソリューションのフォルダ内にtest.txtファイルが作られると読んでる入門書には書いてあるのですが
VisualStudioのフォルダ内、何処を探しても生成されてません;何処に有るのでしょうか?
file=fopen("test.txt","w");
fclose(file);
これでソリューションのフォルダ内にtest.txtファイルが作られると読んでる入門書には書いてあるのですが
VisualStudioのフォルダ内、何処を探しても生成されてません;何処に有るのでしょうか?
2019/06/24(月) 09:37:54.94ID:LpgW8DGO
ドキュメントにプロジェクトを作らなかったか?
その中かと
その中かと
2019/06/24(月) 10:06:16.55ID:N4e4wdnY
>>96
「ソリューションのフォルダ内」であって「VisualStudioのフォルダ内」じゃないぞ
「ソリューションのフォルダ内」であって「VisualStudioのフォルダ内」じゃないぞ
2019/06/25(火) 07:24:49.37ID:jHEFOU5u
100デフォルトの名無しさん
2019/06/26(水) 01:39:16.88ID:6WTwK8fu STLコンテナ「set」の特定要素を削除したいとき
set<int> s = {1,2,3};
for (auto itr = s.begin(); itr != s.end(); ++itr) {
cout << *itr << endl;
if (*itr == 2) s.erase(itr);
}
これの実行結果が
1
2
1
3
となるのですが、erase後に最初に戻っているように見えるのは偶然、つまり不定の動作ですか?
なお、正しいイタレータの使い方は以下のようになるのは承知してます
for (auto itr = s.begin(); itr != s.end(); ) {
cout << *itr << endl;
if (*itr == 2) itr = s.erase(itr);
else ++itr;
}
set<int> s = {1,2,3};
for (auto itr = s.begin(); itr != s.end(); ++itr) {
cout << *itr << endl;
if (*itr == 2) s.erase(itr);
}
これの実行結果が
1
2
1
3
となるのですが、erase後に最初に戻っているように見えるのは偶然、つまり不定の動作ですか?
なお、正しいイタレータの使い方は以下のようになるのは承知してます
for (auto itr = s.begin(); itr != s.end(); ) {
cout << *itr << endl;
if (*itr == 2) itr = s.erase(itr);
else ++itr;
}
101デフォルトの名無しさん
2019/06/26(水) 07:52:05.91ID:Re4GWmuT102デフォルトの名無しさん
2019/06/26(水) 09:02:19.59ID:16uFKMyS いやいや
103デフォルトの名無しさん
2019/06/26(水) 09:07:00.61ID:Re4GWmuT あ、インクリメントのほうが先か。ごめんなさい。
104デフォルトの名無しさん
2019/06/26(水) 14:50:08.20ID:7raG/MY1 未定義動作を起こしてるんで
プログラムがたまたまクラッシュもせずに最後まで動いたというレベルからの偶然
プログラムがたまたまクラッシュもせずに最後まで動いたというレベルからの偶然
105デフォルトの名無しさん
2019/06/26(水) 23:47:19.51ID:6WTwK8fu やはり偶然なんですね
ありがとうございました
ありがとうございました
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【速報】気象庁は津波注意報すべて解除 [蚤の市★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- さかまた「過呼吸になった」かなた「耳聞こえない」ござる「声出ない」まつり「ご飯食べれない」
- 【画像】カリカリ女、脱いだらすごい😨 [632966346]
- 塩ラーメン頼んだら塩水に麺が入ってるラーメンが出てきた
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- お前らいじめんの飽きた
