!extend:checked:vvvvv:1000:512
(新スレ立ての際上記コマンドを2行書き込んでください)
C言語の話題のみ取り扱います C++の話題はC++スレへ
質問には最低限の情報(ソース/コンパイラ/OS)を付ける
数行で収まらないソースは以下を適当に使ってURLを晒す
https://paiza.io/
https://ideone.com/
http://codepad.org/
C11
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf
C99
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf
http://kikakurui.com/x3/X3010-2003-01.html
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
JPCERT C コーディングスタンダード
https://www.jpcert.or.jp/sc-rules/
※前スレ
C言語なら俺に聞け 155
https://mevius.5ch.net/test/read.cgi/tech/1589120427/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
C言語なら俺に聞け 156
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9bb7-/QqT)
2020/09/28(月) 14:41:30.00ID:QxfbhGyV060デフォルトの名無しさん (ワッチョイ d32c-IT45)
2020/10/05(月) 15:16:14.49ID:z7kgQPv30 f( ) { x( ); }
例えば副作用は、関数x 内で、x終了後にも保持されるもの、
つまり、xの外部にあるものの状態を変えること
x内で、ローカル変数を作って消すのは、副作用ではない
例えば副作用は、関数x 内で、x終了後にも保持されるもの、
つまり、xの外部にあるものの状態を変えること
x内で、ローカル変数を作って消すのは、副作用ではない
61デフォルトの名無しさん (ワッチョイ c393-gW4a)
2020/10/05(月) 15:55:01.80ID:mH/ByF4E062デフォルトの名無しさん (エムゾネ FF1f-gW4a)
2020/10/05(月) 16:02:34.00ID:evbZz7z6F void は戻り値省略のときと
void * のときしか使わないな
void * のときしか使わないな
63デフォルトの名無しさん (トンモー MMa7-+9b3)
2020/10/05(月) 16:23:19.64ID:kpO4fuI3M >>59
常識的に考えたら主作用あってこその副作用
常識的に考えたら主作用あってこその副作用
64デフォルトの名無しさん (ワッチョイ 7f94-Kk5w)
2020/10/05(月) 18:27:51.05ID:yKl6yS5S0 仕様書の片隅から誰も使ってない用語引っ張り出してくるのは簡便してほしいわ。
6560 (ワッチョイ d32c-IT45)
2020/10/06(火) 04:29:28.36ID:PeElnWrx0 副作用とは、関数型言語のモナド
ディスプレイに表示されたとか、ログ・データベースに書き込まれたとか、
関数の処理が終わった後に、関数外部の何かの状態を、永続的に変えた場合
サーバー構築は、副作用の集まり。
Ruby 製のVagrant, Chef, Cookpad製のItamae など、冪(べき)等性などでも使われる
同じ処理を何回繰り返しても、外部の状態が同じになること
ディスプレイに表示されたとか、ログ・データベースに書き込まれたとか、
関数の処理が終わった後に、関数外部の何かの状態を、永続的に変えた場合
サーバー構築は、副作用の集まり。
Ruby 製のVagrant, Chef, Cookpad製のItamae など、冪(べき)等性などでも使われる
同じ処理を何回繰り返しても、外部の状態が同じになること
66デフォルトの名無しさん (ワッチョイ 7f52-w3sw)
2020/10/06(火) 06:52:51.94ID:KQx0qL8O0 またRuby君か
カオスだな
カオスだな
67デフォルトの名無しさん (ワッチョイ 53b7-Kk5w)
2020/10/06(火) 06:53:38.32ID:2iI+f89O0 riskとbenefitじゃ全然意味違うね
68デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/08(木) 19:44:51.48ID:UfnCY9Jf0 副作用まとめ
・CQ出版社『トランジスタ技術』
https://toragi.cqpub.co.jp/Portals/0/backnumber/2006/10/p179-180.pdf
要約すると「(値を返すという)主作用じゃないのが副作用という」
・筑波大学の亀山教授『プログラム言語論』(大学講義の資料)
http://www.cs.tsukuba.ac.jp/~kam/lecture/plm2011/5-web.pdf
要約すると「(値を返すという)主たる作用じゃないのが副作用という」
・『実践 F# 関数型プログラミング入門』のP86
要約すると「(値を返すという)主作用じゃないのが副作用という」
・英語wikipediaの副作用の説明
ttps://en.wikipedia.org/wiki/Side_effect_(computer_science)
要約すると「ローカル環境以外の状態を変化させることは、(値を返す)主作用以外のものなので、副作用と呼ぶ。」
・CQ出版社『トランジスタ技術』
https://toragi.cqpub.co.jp/Portals/0/backnumber/2006/10/p179-180.pdf
要約すると「(値を返すという)主作用じゃないのが副作用という」
・筑波大学の亀山教授『プログラム言語論』(大学講義の資料)
http://www.cs.tsukuba.ac.jp/~kam/lecture/plm2011/5-web.pdf
要約すると「(値を返すという)主たる作用じゃないのが副作用という」
・『実践 F# 関数型プログラミング入門』のP86
要約すると「(値を返すという)主作用じゃないのが副作用という」
・英語wikipediaの副作用の説明
ttps://en.wikipedia.org/wiki/Side_effect_(computer_science)
要約すると「ローカル環境以外の状態を変化させることは、(値を返す)主作用以外のものなので、副作用と呼ぶ。」
69デフォルトの名無しさん (ワッチョイ 06e9-xYNh)
2020/10/09(金) 00:16:53.25ID:Sv65jxff0 個人的なメモとしてなら好きにまとめてくれていいんだけど
C言語に限れば>>34が国際標準(共通認識)なので、どうしても「主作用」という言葉を使った話がしたいなら
それらの文献と同様に(その場における)定義を添えましょう。
C言語に限れば>>34が国際標準(共通認識)なので、どうしても「主作用」という言葉を使った話がしたいなら
それらの文献と同様に(その場における)定義を添えましょう。
70デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 04:34:08.16ID:NuSz27BH071デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 04:43:13.97ID:NuSz27BH0 まあ、プログラミング界隈の人達に
ttps://en.wikipedia.org/wiki/Side_effect_(computer_science)
のように説明される副作用の概念があり、Cでもそれを「借りてきて」副作用という言葉を使ってるのだから、主作用という概念自体はCの規格を書いた人の頭にもあるんだよ。
ttps://en.wikipedia.org/wiki/Side_effect_(computer_science)
のように説明される副作用の概念があり、Cでもそれを「借りてきて」副作用という言葉を使ってるのだから、主作用という概念自体はCの規格を書いた人の頭にもあるんだよ。
72デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 05:34:51.35ID:NuSz27BH0 オライリージャパンのCクイックリファレンス第二版を調べてみても
副作用の説明は次のように始まる。
「式の評価は、値を得られるだけでなく、実行環境に副作用と呼ばれる別の変化を起こすことがある」
皆は同じ説明の仕方で、「値を得られる」という主作用に触れて副作用の説明してるのに、なんでこのスレだけはこの概念に触れちゃ駄目なの?
ちなみに、このオライリー本の著者はC言語のエキスパートとして世界的に有名です
副作用の説明は次のように始まる。
「式の評価は、値を得られるだけでなく、実行環境に副作用と呼ばれる別の変化を起こすことがある」
皆は同じ説明の仕方で、「値を得られる」という主作用に触れて副作用の説明してるのに、なんでこのスレだけはこの概念に触れちゃ駄目なの?
ちなみに、このオライリー本の著者はC言語のエキスパートとして世界的に有名です
73デフォルトの名無しさん (ワッチョイ 7b7f-nZE0)
2020/10/09(金) 07:05:22.54ID:4a3ez4RS0 >>68
必死に探してそれしか見つけられなかったんだろう?
出てきたとしても副作用の説明のために使われるだけ。
プログラミング界隈で主作用という言葉はまるで市民権を得てないんだよ
そんなにこだわるなら今後使ってもらえるように頑張りなよ
必死に探してそれしか見つけられなかったんだろう?
出てきたとしても副作用の説明のために使われるだけ。
プログラミング界隈で主作用という言葉はまるで市民権を得てないんだよ
そんなにこだわるなら今後使ってもらえるように頑張りなよ
74デフォルトの名無しさん (アウアウウー Sa2f-uINc)
2020/10/09(金) 07:11:00.69ID:oLqzRy4la >>72
「副作用」といわれる作用の他に、一般的な意味での主たる作用として値が得られること自体を否定してる人はいないだろ。
ただC言語の規格としては「副作用」と対になる「主作用」という用語や概念は規定されておらず、副作用と言う語と同等に主作用を語るのは気持ち悪いな。
変数の説明のために便宜的に値をいれる箱ですよという言い方がよくされるけど、お前さんの挙げた文献における「主作用」も同様で、副作用に対する主たる作用の説明のために持ち出した一般名詞というだけだろう。
「副作用」といわれる作用の他に、一般的な意味での主たる作用として値が得られること自体を否定してる人はいないだろ。
ただC言語の規格としては「副作用」と対になる「主作用」という用語や概念は規定されておらず、副作用と言う語と同等に主作用を語るのは気持ち悪いな。
変数の説明のために便宜的に値をいれる箱ですよという言い方がよくされるけど、お前さんの挙げた文献における「主作用」も同様で、副作用に対する主たる作用の説明のために持ち出した一般名詞というだけだろう。
75デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 07:13:51.95ID:NuSz27BH076デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 07:15:48.04ID:NuSz27BH077デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 07:19:20.79ID:NuSz27BH0 >>74
>C言語の規格としては「副作用」と対になる「主作用」という用語や概念は規定されておらず、副作用と言う語と同等に主作用を語るのは気持ち悪いな。
結局、プログラムにおける一般的な概念はここでは触れてはだめだということですか?
Cもプログラミングなのに。
誰もがその概念に触れた上で副作用について説明してるのに。Cクイックリファレンス第二版でもそう。
>C言語の規格としては「副作用」と対になる「主作用」という用語や概念は規定されておらず、副作用と言う語と同等に主作用を語るのは気持ち悪いな。
結局、プログラムにおける一般的な概念はここでは触れてはだめだということですか?
Cもプログラミングなのに。
誰もがその概念に触れた上で副作用について説明してるのに。Cクイックリファレンス第二版でもそう。
78デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/09(金) 07:25:51.14ID:TjErAM+z0 職場でのレビューには使えない用語だね
厳格な言葉遣いが要求されるところではダメ
厳格な言葉遣いが要求されるところではダメ
79デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 07:30:12.69ID:NuSz27BH080デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 07:32:00.31ID:NuSz27BH0 あと、ワッチョイ変えて自演連投してるやろ
過疎スレに急に人が集まるのはおかしい
過疎スレに急に人が集まるのはおかしい
8160 (ワッチョイ 672c-Dl/i)
2020/10/09(金) 07:39:39.09ID:760t1BpC0 別に主作用が値を返すこととは、思っていないから
式は値を返すけど、文は返さない。
関数も返すとは限らない
自動的に、最後に評価された値を返しても、受け取って使うとは限らない。
あまり、主作用を論じることがない
副作用は、C でも使うけど、主に関数型言語のモナド
式は値を返すけど、文は返さない。
関数も返すとは限らない
自動的に、最後に評価された値を返しても、受け取って使うとは限らない。
あまり、主作用を論じることがない
副作用は、C でも使うけど、主に関数型言語のモナド
82デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/09(金) 07:41:10.78ID:TjErAM+z0 >>79
そうか、ISO/IEC 9899:2011も見つけられていないんだな
pdfビューアで検索かけても「main effect」はヒットしないぞ
「side effect」は笑っちゃうくらい沢山ヒットするけど
そうか、ISO/IEC 9899:2011も見つけられていないんだな
pdfビューアで検索かけても「main effect」はヒットしないぞ
「side effect」は笑っちゃうくらい沢山ヒットするけど
83デフォルトの名無しさん (ワッチョイ 7b7f-nZE0)
2020/10/09(金) 07:43:18.14ID:4a3ez4RS084デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 07:47:01.31ID:NuSz27BH085デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 07:49:33.79ID:NuSz27BH0 >>82
だから?そんな話はしてない。
だから?そんな話はしてない。
86デフォルトの名無しさん (ワッチョイ 7b7f-nZE0)
2020/10/09(金) 07:49:48.04ID:4a3ez4RS0 >>80
被害妄想で頑張っちゃうタチなんだね
被害妄想で頑張っちゃうタチなんだね
87デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 07:51:33.89ID:NuSz27BH0 >>86
図星だったんだね
図星だったんだね
88デフォルトの名無しさん (ワッチョイ 7b7f-nZE0)
2020/10/09(金) 07:54:28.94ID:4a3ez4RS0 >>87
ほらもっと頑張りなよwww
ほらもっと頑張りなよwww
89デフォルトの名無しさん (アウアウウー Sa2f-uINc)
2020/10/09(金) 08:00:14.18ID:oLqzRy4la >>80
そういう病的で思い込みが激しいところが反感を買って、突っ込みが多いんだと思うぞ。
そういう病的で思い込みが激しいところが反感を買って、突っ込みが多いんだと思うぞ。
90デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 08:00:39.91ID:NuSz27BH0 はいはい
91デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/09(金) 08:09:12.19ID:TjErAM+z0 >>85
> 主作用という概念に触れずに副作用というものを説明してる本が、今まで見つけられないんだが。
おまえさん、こう言ったろ?
ISO/IEC 9899:2011はmain effectという概念に触れずにside effectというものを説明してるぞ
おまえさんが見つけられない本を紹介してやったんだよ
> 主作用という概念に触れずに副作用というものを説明してる本が、今まで見つけられないんだが。
おまえさん、こう言ったろ?
ISO/IEC 9899:2011はmain effectという概念に触れずにside effectというものを説明してるぞ
おまえさんが見つけられない本を紹介してやったんだよ
92デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 08:10:10.53ID:NuSz27BH0 >>91
解説書じゃなく規格書だろうに。一般常識なんてわざわざ説明してるわけない。
解説書じゃなく規格書だろうに。一般常識なんてわざわざ説明してるわけない。
93デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 08:11:04.89ID:NuSz27BH0 オライリー本(Cクイックリファレンス第二版)でも、主作用という概念に触れて副作用について説明している。
英語のwikipediaでも当然のように主作用という概念に触れた上で、副作用の説明がなされている。
逆に、主作用という概念に触れずに副作用というものを説明してる本が、今まで見つけられない。
ちなみに、規格書は解説書じゃなんだから、一般常識はいちいち書いてなくて当然。
とりあえず、C言語等の解説書で、副作用について解説がなされている本で、主作用という概念について一切触れられてない本があれば挙げてくれ。
そんな本は、図書館に行って調べたけど、一つも無かったから。もしかしたら、ごく一部にあるのかもしれないけど、まずないから。
英語のwikipediaでも当然のように主作用という概念に触れた上で、副作用の説明がなされている。
逆に、主作用という概念に触れずに副作用というものを説明してる本が、今まで見つけられない。
ちなみに、規格書は解説書じゃなんだから、一般常識はいちいち書いてなくて当然。
とりあえず、C言語等の解説書で、副作用について解説がなされている本で、主作用という概念について一切触れられてない本があれば挙げてくれ。
そんな本は、図書館に行って調べたけど、一つも無かったから。もしかしたら、ごく一部にあるのかもしれないけど、まずないから。
9460 (ワッチョイ 672c-Dl/i)
2020/10/09(金) 08:16:29.40ID:760t1BpC0 副作用は、Elixir みたいな関数型言語で使うだけ。
パイプライン
Ruby でも、メソッドチェーンする
副作用が怖いから、皆この手の言語では、
状態を持つな、map, map ばっかり言うw
パイプライン
Ruby でも、メソッドチェーンする
副作用が怖いから、皆この手の言語では、
状態を持つな、map, map ばっかり言うw
95デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/09(金) 08:19:07.63ID:TjErAM+z096デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 08:24:25.86ID:NuSz27BH0 >>95
ようするに、社則に「社員は勤務中に呼吸をしなくてはならない」とは書いてないから、「社員は呼吸禁止」ですか?
オライリー本その他も当然のように触れている、プログラミングの一般常識には、このスレでは触れてはダメということですか?
C言語もプログラミングなのに、プログラミングの一般常識には触れてはだめですか?
ようするに、社則に「社員は勤務中に呼吸をしなくてはならない」とは書いてないから、「社員は呼吸禁止」ですか?
オライリー本その他も当然のように触れている、プログラミングの一般常識には、このスレでは触れてはダメということですか?
C言語もプログラミングなのに、プログラミングの一般常識には触れてはだめですか?
97デフォルトの名無しさん (ワッチョイ 06e9-xYNh)
2020/10/09(金) 08:54:49.66ID:Sv65jxff0 少なくとも>69では「触れてはだめ」なんて話はしてないのに、どうしてそんな話になったのか。
98デフォルトの名無しさん (トンモー MMff-0hVy)
2020/10/09(金) 08:57:01.35ID:1HKZBnpVM99デフォルトの名無しさん (トンモー MMff-0hVy)
2020/10/09(金) 09:09:51.23ID:1HKZBnpVM 仕様書のside effectは、sideでないものを念頭に置くからsideという
main的なものが念頭に置かれているのを否定するやつはアホしかいない
それが何かは英wikiのside effectにも書かれてあるじゃないか
次元が低すぎだろ
main的なものが念頭に置かれているのを否定するやつはアホしかいない
それが何かは英wikiのside effectにも書かれてあるじゃないか
次元が低すぎだろ
100デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/09(金) 09:39:01.71ID:TjErAM+z0 >>96
日本語でおk
日本語でおk
101デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/09(金) 09:41:56.88ID:TjErAM+z0102デフォルトの名無しさん (ワントンキン MM3a-7d23)
2020/10/09(金) 12:48:32.11ID:J15OmNAdM 副大統領職があるので、正大統領と呼んでも意味は通じるが、普通は言わない。
それだけだ。
それだけだ。
103デフォルトの名無しさん (ワッチョイ 4ab3-ICsZ)
2020/10/09(金) 17:02:12.86ID:RcOsUEk40 ま JIS規格のは「副」作用なんやから 作用(主作用)前提でこそのワードチョイスやん
そこを触れるの嫌がるって無理ありすぎやろ
しまいにはwでファビョる始末
そこを触れるの嫌がるって無理ありすぎやろ
しまいにはwでファビョる始末
104デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/09(金) 17:37:29.96ID:TjErAM+z0 嫌がってねえ
必要性を感じねえつってんだよ
演算と副作用
これだけであらゆる説明ができる
主作用なんかいらねえ
必要性を感じねえつってんだよ
演算と副作用
これだけであらゆる説明ができる
主作用なんかいらねえ
105デフォルトの名無しさん (ワッチョイ 63e6-9QVr)
2020/10/09(金) 18:56:14.04ID:Jq2CJneE0 暇なスレだなぁ
106デフォルトの名無しさん (アウアウウー Sa2f-JD9c)
2020/10/09(金) 20:19:54.00ID:O/EjtfR6a char型配列初文字で初期化して
printfしたらフフフだ
わからん
printfしたらフフフだ
わからん
107デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/09(金) 21:08:22.64ID:NuSz27BH0 質問があります。
副作用とは何ですか?
副作用とは何ですか?
式について
「(式が持つ)値」vs「副作用」
の対立概念だと思っていました、こういうのは lisp がやりはじめたんじゃないでしょうか?
「(式が持つ)値」vs「副作用」
の対立概念だと思っていました、こういうのは lisp がやりはじめたんじゃないでしょうか?
109デフォルトの名無しさん (ワッチョイ de2c-+Jfp)
2020/10/10(土) 01:05:22.78ID:AL04749p0 将来AR関連の仕事につきたいんですけど、初めての言語はCってどうなんでしょうか?
110デフォルトの名無しさん (ワッチョイ 672c-Dl/i)
2020/10/10(土) 05:02:23.82ID:BjcbKuib0 Java入門・初心者質問スレ Part.10
https://mevius.5ch.net/test/read.cgi/tech/1585721355/686
上に書いたけど、
YouTube で有名な雑食系エンジニア・KENTA は、
AI をやりたいからと言って、Python から始めてはいけないと言ってる。
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる
Ruby以外の言語から始めると、挫折確率が高い。
ほとんどの学校も、Ruby on Rails ばっかり
Rubyの女神・女優の池澤あやかも言ってる。
大学生がプログラミングを嫌いになるのは、授業でC をやるから
C/C++ などのポインタ系言語は、たいてい挫折する。
ほとんどのテスト時間を、ポインタの追跡に使ってしまって、しょーもないから
https://mevius.5ch.net/test/read.cgi/tech/1585721355/686
上に書いたけど、
YouTube で有名な雑食系エンジニア・KENTA は、
AI をやりたいからと言って、Python から始めてはいけないと言ってる。
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる
Ruby以外の言語から始めると、挫折確率が高い。
ほとんどの学校も、Ruby on Rails ばっかり
Rubyの女神・女優の池澤あやかも言ってる。
大学生がプログラミングを嫌いになるのは、授業でC をやるから
C/C++ などのポインタ系言語は、たいてい挫折する。
ほとんどのテスト時間を、ポインタの追跡に使ってしまって、しょーもないから
111デフォルトの名無しさん (ワッチョイ c68c-GIgh)
2020/10/10(土) 07:30:36.51ID:tajpvl710 シェルスクリプトが一番実用性が高い。
112デフォルトの名無しさん (ガラプー KK56-yUdL)
2020/10/10(土) 08:34:32.00ID:sA7w+t8zK113デフォルトの名無しさん (ワッチョイ ea47-YQ4O)
2020/10/10(土) 16:25:14.09ID:i5KfYhU+0 >>109
ハゲめ
ハゲめ
114デフォルトの名無しさん (アウアウウー Sa2f-JD9c)
2020/10/10(土) 18:03:01.19ID:NSofC8xCa115デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/10(土) 19:43:45.13ID:THhanVwl0 char str[] = "unko";
printf("%s", "str");
これで何か出力されたとして
それは目的通りなのか?
printf("%s", "str");
これで何か出力されたとして
それは目的通りなのか?
116デフォルトの名無しさん (ワッチョイ ca61-wCbK)
2020/10/10(土) 21:20:02.75ID:yhyq5Xqm0 可変長マクロ、... や __VA_ARGS__ に関連して、カンマが自動削除されたり
する使用は、結局、統一した仕様はあるのでしょうか?
__VA_OPT(,) を使う流儀と、カンマを自動削除する流儀、
実引数に , を書いた場合と書かなかった場合の違いなど、
色々有って何が標準か分かりません。
する使用は、結局、統一した仕様はあるのでしょうか?
__VA_OPT(,) を使う流儀と、カンマを自動削除する流儀、
実引数に , を書いた場合と書かなかった場合の違いなど、
色々有って何が標準か分かりません。
117デフォルトの名無しさん (ワッチョイ ca61-wCbK)
2020/10/10(土) 21:36:11.71ID:yhyq5Xqm0 #define aaa(fmt, ...) g(fmt __VA_OPT__(,) __VA_ARGS__)
の場合、
aaa(x)とaaa(x,)でどちらも結果は同じ g(x) になるのでしょうか?
そもそも、VC++では、
#define bbb(fmt, ...) g(fmt , __VA_ARGS__)
としていても、
bbb(x)とbbb(x,)でどちらも結果は同じ g(x) になるのでしょうか?
の場合、
aaa(x)とaaa(x,)でどちらも結果は同じ g(x) になるのでしょうか?
そもそも、VC++では、
#define bbb(fmt, ...) g(fmt , __VA_ARGS__)
としていても、
bbb(x)とbbb(x,)でどちらも結果は同じ g(x) になるのでしょうか?
118はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8a3e-NY7j)
2020/10/10(土) 22:10:07.34ID:i9YWGOdm0 >>72
その本を持ってないから前後の文脈はわからんけど、引用部分に関して言えば正しいよ。
「式の評価のときに副作用が起きることもある」というのは正しい。
でも、仮に「式の評価のときに値を得られる他に起きることが副作用である」と言ったら間違いだ。
C では実行環境の状態を変化させることを副作用と定義するのであって、
式評価のときに主作用 (式から値にする操作を仮にそう呼ぶとして) の他に
副作用も起こるというのは定義に付随する性質なわけ。
(C における) 副作用とは何かの「定義」に主作用という概念は絡まないんだ。
式を評価する以外の方法 (主作用が存在しない) で起こる状態変化も副作用ということになる。
その本を持ってないから前後の文脈はわからんけど、引用部分に関して言えば正しいよ。
「式の評価のときに副作用が起きることもある」というのは正しい。
でも、仮に「式の評価のときに値を得られる他に起きることが副作用である」と言ったら間違いだ。
C では実行環境の状態を変化させることを副作用と定義するのであって、
式評価のときに主作用 (式から値にする操作を仮にそう呼ぶとして) の他に
副作用も起こるというのは定義に付随する性質なわけ。
(C における) 副作用とは何かの「定義」に主作用という概念は絡まないんだ。
式を評価する以外の方法 (主作用が存在しない) で起こる状態変化も副作用ということになる。
119デフォルトの名無しさん (ワッチョイ 672c-JAxH)
2020/10/10(土) 23:13:28.82ID:BjcbKuib0 厳密に言えば、++ 演算子を絡めたものは、変数自体を変更してるから副作用
b = a + 1
なら、変数a を変更していないから、副作用はない
だから、Go では副作用を警戒して、
++ 演算子は、単独の文でしか使えない。
組み合わせられない
a++
b = a + 1
なら、変数a を変更していないから、副作用はない
だから、Go では副作用を警戒して、
++ 演算子は、単独の文でしか使えない。
組み合わせられない
a++
120デフォルトの名無しさん (ワッチョイ cbda-KV+F)
2020/10/10(土) 23:46:17.77ID:xY0iDsv30 >>117
標準(C17/18までの時点)では可変長引数マクロが第一引数以外の場合は少なくともひとつの引数が無ければシンタックスエラーになる
C++20で対応が提案(採択)されていて, 併せてCにも同じ仕様で提案されてる
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2034.htm
現状で(標準の範囲内で)同じことをするにはかなりトリッキーな方法を使う必要がある
https://stackoverflow.com/a/11172679
またはBoost.PreprocessorのBOOST_PP_VA_OPTが上記提案の__VA_OPT__の代替として使える
標準(C17/18までの時点)では可変長引数マクロが第一引数以外の場合は少なくともひとつの引数が無ければシンタックスエラーになる
C++20で対応が提案(採択)されていて, 併せてCにも同じ仕様で提案されてる
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2034.htm
現状で(標準の範囲内で)同じことをするにはかなりトリッキーな方法を使う必要がある
https://stackoverflow.com/a/11172679
またはBoost.PreprocessorのBOOST_PP_VA_OPTが上記提案の__VA_OPT__の代替として使える
121デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 00:07:40.75ID:yV/54YAK0122デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 00:21:33.30ID:yV/54YAK0 君はたぶんスレを保守してる人なんだろうけどさあ、
その話はHNをわざわざ使ってる君のプライドを守るためだけの話になってるので、ここで話し合う意味がないんだよね。
その話はHNをわざわざ使ってる君のプライドを守るためだけの話になってるので、ここで話し合う意味がないんだよね。
123デフォルトの名無しさん (ワッチョイ 06e9-xYNh)
2020/10/11(日) 00:30:42.60ID:u/XktDCx0 相手するのがめんどくさい、プライドを守るためだけ
おまいうwww
おまいうwww
124デフォルトの名無しさん (ワッチョイ 0363-KV+F)
2020/10/11(日) 00:45:20.99ID:y5Dl22i00 ここに書き込んでいる人って、暇ですることが無い人ばかりではなかったか?
125デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 00:48:15.50ID:yV/54YAK0 HNをわざわざ使ってる人は必ず、批判されるとHNを使わずに自演するんだよね。
上の書き込みが自演かどうかは知らんけど、自演は必ずする。
大昔にローカルの掲示板をやってたことがあるから、HNを使う人のこの習性はよくよく知ってる。
一人残らずそうやってた。
上の書き込みが自演かどうかは知らんけど、自演は必ずする。
大昔にローカルの掲示板をやってたことがあるから、HNを使う人のこの習性はよくよく知ってる。
一人残らずそうやってた。
12642 (ワッチョイ cbda-KV+F)
2020/10/11(日) 00:54:48.93ID:Oo+TUOYr0 >>42
一部誤っていたので訂正。
6.5.16 Assignment operators
3
An assignment operator stores a value in the object designated by the left operand.
An assignment expression has the value of the left operand after the assignment, but is not an lvalue.
The type of an assignment expression is the type the left operand would have after lvalue conversion.
The side effect of updating the stored value of the left operand is sequenced after the value computations of the left and right operands.
The evaluations of the operands are unsequenced.
なので代入式の値は「左辺式(left operand)に右辺式(right operand)の値を代入した後の値を右辺値(rvalueの意味)として評価した値」が正しかった。
一部誤っていたので訂正。
6.5.16 Assignment operators
3
An assignment operator stores a value in the object designated by the left operand.
An assignment expression has the value of the left operand after the assignment, but is not an lvalue.
The type of an assignment expression is the type the left operand would have after lvalue conversion.
The side effect of updating the stored value of the left operand is sequenced after the value computations of the left and right operands.
The evaluations of the operands are unsequenced.
なので代入式の値は「左辺式(left operand)に右辺式(right operand)の値を代入した後の値を右辺値(rvalueの意味)として評価した値」が正しかった。
127デフォルトの名無しさん (ワッチョイ 0363-KV+F)
2020/10/11(日) 00:55:54.98ID:y5Dl22i00 HNをNGに登録し、レス書いた奴ごとアボーンすると比較的すっきりする
128デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 01:44:57.79ID:yV/54YAK0 >>126
意訳すれば「代入式の値は、左辺へ代入後に取り出してたら処理が無駄に重くなるから、代入直前の値を返すべき。返されるものは、左辺と同じ(値と型が)」
まあ端的に言うと、左辺が返されてると理解しとけばいいね。
意訳すれば「代入式の値は、左辺へ代入後に取り出してたら処理が無駄に重くなるから、代入直前の値を返すべき。返されるものは、左辺と同じ(値と型が)」
まあ端的に言うと、左辺が返されてると理解しとけばいいね。
129デフォルトの名無しさん (ワッチョイ cbda-KV+F)
2020/10/11(日) 07:57:55.20ID:Oo+TUOYr0 >>128
「左辺へ代入後に取り出してたら処理が無駄に重くなるから、代入直前の値を返すべき」なんて書いてない
脚注に
> 111) The implementation is permitted to read the object to determine the value but is not required to, even
when the object has volatile-qualified type.
とはあるが, どう実装すべきなどとは書いていないのだから, それは意訳ではなくお前の意見だ
「左辺へ代入後に取り出してたら処理が無駄に重くなるから、代入直前の値を返すべき」なんて書いてない
脚注に
> 111) The implementation is permitted to read the object to determine the value but is not required to, even
when the object has volatile-qualified type.
とはあるが, どう実装すべきなどとは書いていないのだから, それは意訳ではなくお前の意見だ
130デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 08:44:36.55ID:yV/54YAK0131デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 09:21:01.70ID:yV/54YAK0 あと、そういうなら、君の書いた
>代入式の値は「左辺式(left operand)に右辺式(right operand)の値を代入した後の値を右辺値(rvalueの意味)として評価した値」
これだって君の意訳で意見だよね。
言葉は通じるためにある。ネット検索しても、世間一般的にも代入のことは副作用と呼んでるよね。
副作用を検索すれば「代入」という言葉が頻出する。
なので「The side effect of updating the stored value of the left operand」⇒ 代入 となる
次に、「(代入) is sequenced after the value computations of the left and right operands.」を訳すると「代入は両オペランドの値を処理後に行われる」となる。
つまり、「代入は最後に行われる」とは読めないかな? よって、返す値はその前に原則的に決まってるということ。
なので「代入した後の値を」という表現は違和感あるし、ワタスの代入直前の方が正解に近くはないかな?
まあ、ワタスは、C言語の超初心者なので、君の挙げてくれた英文を周辺状況と合わせて普通に読んでるだけだけども。
そもそも論だけど、仕様書のことを述べても、実装がその通りになってるとは限らないから意味ないよね。
>代入式の値は「左辺式(left operand)に右辺式(right operand)の値を代入した後の値を右辺値(rvalueの意味)として評価した値」
これだって君の意訳で意見だよね。
言葉は通じるためにある。ネット検索しても、世間一般的にも代入のことは副作用と呼んでるよね。
副作用を検索すれば「代入」という言葉が頻出する。
なので「The side effect of updating the stored value of the left operand」⇒ 代入 となる
次に、「(代入) is sequenced after the value computations of the left and right operands.」を訳すると「代入は両オペランドの値を処理後に行われる」となる。
つまり、「代入は最後に行われる」とは読めないかな? よって、返す値はその前に原則的に決まってるということ。
なので「代入した後の値を」という表現は違和感あるし、ワタスの代入直前の方が正解に近くはないかな?
まあ、ワタスは、C言語の超初心者なので、君の挙げてくれた英文を周辺状況と合わせて普通に読んでるだけだけども。
そもそも論だけど、仕様書のことを述べても、実装がその通りになってるとは限らないから意味ないよね。
132デフォルトの名無しさん (ワッチョイ 4a61-wCbK)
2020/10/11(日) 09:24:54.54ID:1n9mnEAt0133デフォルトの名無しさん (ワッチョイ ea47-YQ4O)
2020/10/11(日) 12:23:08.94ID:kZXFoyze0134デフォルトの名無しさん (ガラプー KK56-yUdL)
2020/10/11(日) 15:19:35.65ID:Ryz1amqZK135デフォルトの名無しさん (ワッチョイ cbda-KV+F)
2020/10/11(日) 16:59:31.64ID:Oo+TUOYr0 >>131
阿呆かな?
>>128は>>126の原文中に無く脚注で書かれている内容だしその脚注にも「左辺へ代入後に取り出してたら処理が無駄に重くなるから」などとは書かれていない
> 次に、「(代入) is sequenced after the value computations of the left and right operands.」を訳すると「代入は両オペランドの値を処理後に行われる」となる。
> つまり、「代入は最後に行われる」とは読めないかな?
正しい
> よって、返す値はその前に原則的に決まってるということ。
妄想
規格ではunspecified (実装の自由度)
> そもそも論だけど、仕様書のことを述べても、実装がその通りになってるとは限らないから意味ないよね。
逆だろ, 処理系を指定しないなら規格に従うしかない。
阿呆かな?
>>128は>>126の原文中に無く脚注で書かれている内容だしその脚注にも「左辺へ代入後に取り出してたら処理が無駄に重くなるから」などとは書かれていない
> 次に、「(代入) is sequenced after the value computations of the left and right operands.」を訳すると「代入は両オペランドの値を処理後に行われる」となる。
> つまり、「代入は最後に行われる」とは読めないかな?
正しい
> よって、返す値はその前に原則的に決まってるということ。
妄想
規格ではunspecified (実装の自由度)
> そもそも論だけど、仕様書のことを述べても、実装がその通りになってるとは限らないから意味ないよね。
逆だろ, 処理系を指定しないなら規格に従うしかない。
136デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 17:27:29.04ID:yV/54YAK0 >>135
全部反論になってなくて、相手の言ってる言葉を都合のいいように解釈してるだけだね。
全部反論になってなくて、相手の言ってる言葉を都合のいいように解釈してるだけだね。
137デフォルトの名無しさん (ブーイモ MM76-BI9m)
2020/10/11(日) 17:45:12.56ID:0ARGcdMRM 反論できないことは全部反論になってないで片付けるタイプ
138135 (アウアウウー Sa2f-2PH9)
2020/10/11(日) 17:51:10.03ID:jw/lLa/Ba139デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 17:52:06.99ID:yV/54YAK0 全然反論になってないし、第一、第一声が「阿呆かな?」と頭に血が昇ってる人の相手しても意味ないじゃん。
140デフォルトの名無しさん (ワッチョイ 06e9-xYNh)
2020/10/11(日) 18:39:36.02ID:u/XktDCx0 意味ないのに書き込んじゃうのはなんでだろうね?
141デフォルトの名無しさん (ワッチョイ c393-YQ4O)
2020/10/11(日) 19:03:18.63ID:yV/54YAK0 結局、原則的には、返す値は代入前に決まってるよね。gccもVC++もそうみたいだし。
142デフォルトの名無しさん (ワッチョイ 07b7-xYNh)
2020/10/11(日) 19:54:22.88ID:vwOca/6s0 > > そもそも論だけど、仕様書のことを述べても、実装がその通りになってるとは限らないから意味ないよね。
> 逆だろ, 処理系を指定しないなら規格に従うしかない。
同感
> 逆だろ, 処理系を指定しないなら規格に従うしかない。
同感
143デフォルトの名無しさん (トンモー MMff-0hVy)
2020/10/11(日) 20:21:00.36ID:qb0SAJQcM まぁ過去の恨みで絡むのはやめとこうな
非建設的すぎる
非建設的すぎる
144デフォルトの名無しさん (トンモー MMff-0hVy)
2020/10/11(日) 21:19:40.64ID:qb0SAJQcM 一般論と規格の噛み合わない話が続いてるな
例えば日本語を表すのは大抵の処理系でshift jisかunicodeだが
一般論としてshift jisかunicodeだというと
規格として規定されてないみたいな
お互いの話してる主語が違ってて噛み合わない
例えば日本語を表すのは大抵の処理系でshift jisかunicodeだが
一般論としてshift jisかunicodeだというと
規格として規定されてないみたいな
お互いの話してる主語が違ってて噛み合わない
145デフォルトの名無しさん (ワッチョイ 6746-7d23)
2020/10/11(日) 21:45:50.38ID:/f4IUzXt0 >>144
下段の喩えが分かりませぬ。
下段の喩えが分かりませぬ。
146デフォルトの名無しさん (ワッチョイ 4a2f-JD9c)
2020/10/12(月) 17:32:23.08ID:Fn8G8w4j0 ファイルオープンできない
visualstudioにてfopen_s
err = fopen_s(&fp,"test.txt","r");
visualstudioにてfopen_s
err = fopen_s(&fp,"test.txt","r");
147デフォルトの名無しさん (ワイーワ2 FF82-YQ4O)
2020/10/12(月) 17:53:16.57ID:941JO02hF FILE *fp;
なら
err = fopen_s(fp,"test.txt","r");
なら
err = fopen_s(fp,"test.txt","r");
148デフォルトの名無しさん (ワッチョイ caf0-uZln)
2020/10/12(月) 18:26:02.48ID:YDN8KrDa0149デフォルトの名無しさん (ラクッペペ MM86-2AW8)
2020/10/12(月) 20:07:04.33ID:XcjAzDTUM 初心者にありがちなのは相対パスを理解してなくてファイルが無いから開けないってやつ
150デフォルトの名無しさん (ワッチョイ ca02-jNgh)
2020/10/12(月) 20:19:27.43ID:UculHi610151デフォルトの名無しさん (ワッチョイ ca93-Pfvf)
2020/10/13(火) 19:59:14.31ID:NHAZjg2T0 初歩的な質問で大変恐縮ですが、
平成6年度基本情報技術者試験のC言語について質問がありまして、
https://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H6b2/g11.html
問2のCですが、答えが2つありませんか?
ウでもエでもどちらでも正解の気がします。
コンパイルして両方の回答で試してみましたが、問題なく動きます。
なぜ答えがウになってエではいけないのか、どなたか知恵を貸していただけませんでしょうか?
平成6年度基本情報技術者試験のC言語について質問がありまして、
https://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H6b2/g11.html
問2のCですが、答えが2つありませんか?
ウでもエでもどちらでも正解の気がします。
コンパイルして両方の回答で試してみましたが、問題なく動きます。
なぜ答えがウになってエではいけないのか、どなたか知恵を貸していただけませんでしょうか?
152デフォルトの名無しさん (アウアウウー Sa2f-JD9c)
2020/10/13(火) 20:23:51.05ID:FgDiRT1ia 146です。パス入力しデバッグしたら
なにかわけわからんBOX
でてきて思い通りになりません。
なにかわけわからんBOX
でてきて思い通りになりません。
153デフォルトの名無しさん (ワッチョイ 032c-FXSo)
2020/10/13(火) 22:42:18.30ID:ciG+8HNI0 グローバル変数として宣言した変数j0とj1がmathcalls.hにもあるようで、コンパイルするとエラーが出ます
ヘッダファイルを書き換えずに回避するにはどうすればいいですか?
よろしくお願いします
ヘッダファイルを書き換えずに回避するにはどうすればいいですか?
よろしくお願いします
154デフォルトの名無しさん (ワッチョイ 4f7f-xYNh)
2020/10/13(火) 22:43:11.29ID:b7C863zx0 >>151
エだと、60文字目と61文字目が' 'の行があるときに余分な改行が入る
エだと、60文字目と61文字目が' 'の行があるときに余分な改行が入る
155デフォルトの名無しさん (ササクッテロル Sp0f-bZax)
2020/10/14(水) 01:03:48.89ID:9cyhkhnyp モバイルC[C/C++コンパイラ]というアプリケーションを使っています
do~while()文で1!+2!+…+n!が1000を超える最初のnの値を求める問題です
以下の画像のどこが間違ってるか教えて頂きたいです
https://i.imgur.com/WEfqdXB.jpg
do~while()文で1!+2!+…+n!が1000を超える最初のnの値を求める問題です
以下の画像のどこが間違ってるか教えて頂きたいです
https://i.imgur.com/WEfqdXB.jpg
156デフォルトの名無しさん (ブーイモ MM4f-yjnQ)
2020/10/14(水) 01:22:34.34ID:6pvowPnvM どうなって欲しくてどうなってしまうかくらい書け
157デフォルトの名無しさん (ササクッテロル Sp0f-bZax)
2020/10/14(水) 02:05:50.62ID:9cyhkhnyp 14と表示されてほしいのですが実行すると以下の画像のようになります
https://i.imgur.com/ztqzJy1.jpg
https://i.imgur.com/ztqzJy1.jpg
158デフォルトの名無しさん (オイコラミネオ MM8f-QI1E)
2020/10/14(水) 03:22:45.65ID:GZXcc9JpM >>151
出題者が想定していた回答から察するに、「正しい答えを選べ」=「最適なものを選べ」という題意なんだろうね。
「エ」の場合、009〜012が必ず実行される。
「ウ」の場合、空白が連続していない場合のみ、009〜012が実行される。
なので「エ」よりも「ウ」の方が、実行時のコードが少なくなる可能性≒処理速度が速い≒より最適化されている。
ということで、「エ」を排しても「ウ」が選ばれるべき理由は説明できるけど、その逆は説明できそうになさげ
出題者が想定していた回答から察するに、「正しい答えを選べ」=「最適なものを選べ」という題意なんだろうね。
「エ」の場合、009〜012が必ず実行される。
「ウ」の場合、空白が連続していない場合のみ、009〜012が実行される。
なので「エ」よりも「ウ」の方が、実行時のコードが少なくなる可能性≒処理速度が速い≒より最適化されている。
ということで、「エ」を排しても「ウ」が選ばれるべき理由は説明できるけど、その逆は説明できそうになさげ
159デフォルトの名無しさん (オイコラミネオ MM8f-QI1E)
2020/10/14(水) 05:08:01.62ID:GZXcc9JpM■ このスレッドは過去ログ倉庫に格納されています
