C言語なら俺に聞け 157

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん (ワッチョイ 0345-kMi9)
垢版 |
2021/06/28(月) 11:22:51.50ID:so+vl3vs0
!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言語なら俺に聞け 156
https://mevius.5ch.net/test/read.cgi/tech/1601271690/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/11/18(木) 10:49:25.32ID:SHW/gJRC0
ダッサいループ書いてないで公式立てたら?
2021/11/18(木) 11:10:34.71ID:R1PabgqQ0
>>873
「17の倍数」とは「17で割った余りが0」のこと
Cで割った余りを計算する演算子は「%」
2021/11/18(木) 11:14:20.02ID:SHW/gJRC0
17から開始で17ずつ増やしてるだろ
0は17の倍数じゃないそうだが
2021/11/18(木) 11:32:07.83ID:RYwZiL190
>>873
何がどううまく行かないの?あってそうに見えるけど
878デフォルトの名無しさん (エムゾネ FF43-09aj)
垢版 |
2021/11/18(木) 14:40:44.78ID:/He/baLSF
>>869
昔のソース(コンパイラ)は %x で通るのが多い
今から勉強するなら %p の方が良いし新しい教科書使った方が良い
879デフォルトの名無しさん (エムゾネ FF43-09aj)
垢版 |
2021/11/18(木) 14:45:21.17ID:/He/baLSF
>>873
printf("途中計算→%d, %d, %d\n", i / 17, i, sum);
2021/11/18(木) 14:45:34.58ID:/He/baLSF
>>823
https://gitlab.com/libeigen/eigen/-/blob/master/Eigen/src/LU/PartialPivLU.h
https://gitlab.com/libeigen/eigen/-/blob/master/Eigen/src/LU/FullPivLU.h
2021/11/18(木) 18:35:31.06ID:CfNf7HSld
>>867
伝統的にポインタはintと同じメモリサイズなので昔はそう書いてた

そうなんだよな最近のコンパイラはprintfのフォーマットと引数をチェックしてるんだよな
もう慣れたが最初不思議な気がした
組み込みだと自分でprintf関数作ったり(標準だと使わない機能が多くて重すぎるから)するけどそんな時はどうなるのだろうとか
882デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
垢版 |
2021/11/19(金) 00:07:30.77ID:tkL53aTR0
>>872
( ´_ゝ`)フーン
883デフォルトの名無しさん (ワッチョイ e2ad-+VBe)
垢版 |
2021/11/19(金) 00:11:12.00ID:tkL53aTR0
>>873
それでいいのでは?
2021/11/19(金) 00:18:54.40ID:bln5kEpJ0
64 ビット環境では LP64 や LLP64 (int とポインタの大きさが違う) が標準的になってしまったから
古いコードをそのまま持ってきたら通らないってことは割とよくあるよね。
2021/11/19(金) 00:37:21.78ID:tkL53aTR0
long と int (及び char *)を全て32bitとして扱っていて、辛うじてコンパイルは通るが決してまともに動かない
プログラムがあったので、しょうがないから gcc の -m32 と32bit用ライブラリで何とかした。何せ量が膨大で、
人力で直してたら多分何人か死んでたと思う。
2021/11/19(金) 05:44:49.46ID:6rl9yCzd0
俺が出向いた、とあるクライアントでは人海戦術してた
887デフォルトの名無しさん (エムゾネ FF02-iUmB)
垢版 |
2021/11/19(金) 10:15:17.36ID:eyeX0xyMF
long が int に追い越されたのかと思った
2021/11/20(土) 20:09:18.64ID:NniTuIFb0
>>884-886
far near 修飾があたりまえな世界から来た私にとっては、なんで今更なことしているの?と疑問におもっていました
2021/11/20(土) 20:11:58.21ID:LAgO+4EW0
そういえばhageモデルなんてあったな
2021/11/20(土) 21:32:53.52ID:NniTuIFb0
>>889
hage モデル、もとい huge モデルにはバグがある、とのもっぱらの噂でしたが実際どうだったんでしょうか…
2021/11/20(土) 22:42:01.83ID:PPXRLNML0
ていうか、8086のHugeみたいなものはバグ作り込んでしまいそうで怖いよな。ポインタ絡みで。
違う値が同じアドレスになる事あるし。
2021/11/20(土) 22:45:40.83ID:LAgO+4EW0
当時300kを越える配列を処理したくて使いました
使うというか、複数のセグメントに分割して割り当て、
自前で配列インデックスを計算してアクセスしただけですが
2021/11/21(日) 00:46:36.95ID:mkw0m2hl0
違う場所が同じ値になるような場合があっても言語仕様が保証している範囲ではちゃんと仕様通りだったりするんだよな。
というより保証が可能な範囲をうまいこと言語仕様にまとめたって感じなんだと思う。
2021/11/21(日) 08:41:13.51ID:uokK0Aao0
>>888
Windowsが64bit主流になっていく頃にも一騒動あったよ
2021/11/21(日) 12:42:55.44ID:ODZrEgDk0
>>891
さらに年寄りの繰言を続けますが、

>違う値が同じアドレスになる事あるし。

というのは far ポインタでも同じです、far と hage じゃなかった huge の違いは、オフセットの繰り上がりがセグメントに反映されるかされないか
私は余計なことはしてほしくないので、繰り上がりがない far を愛用していました、huge はいまいち信用できませんでした
2021/11/21(日) 12:44:00.07ID:ODZrEgDk0
>>894
それ、今のことなのでは?>>884-886
2021/12/01(水) 02:11:41.33ID:AqcF5lvQ0
構造体のパディングの値って未規定ですか?
2021/12/01(水) 02:24:50.55ID:VU8XmWVx0
>>897
パディングの状況に依存するコードを書くのはよろしくない、というのが一般論だったかと
ファイル入出力で問題になりますが、私はもう、ちまちま fwrite() fread() で「1 byte ずつ」やるしかない、とまで諦めています
環境がバッファリングしてくれますし
2021/12/01(水) 02:53:05.18ID:Y6HO3vrm0
未規定であるしパディングの大きさに依存するようなコードは避けるのが行儀のよいコードであるのは間違いないけど、
対象にしている処理系での挙動がはっきりしていて移植の可能性もない (または移植のコストをかける覚悟がある)
のなら依存するコードを書くことはそれなりにあると思う。

マクロで切り分けて configure (とか cmake とかのメタビルドツール) で各アーキテクチャの都合に対処することは可能だし。

良くはない。 良くはないがそういう良くないことも出来るのが C ってもんなわけで。
2021/12/01(水) 11:58:37.67ID:Jc7L6V7f0
昔、構造体の扱いで失敗した事がある
あるサイトで構造体を引数にして削除処理を行う関数を提供されたが、
実際に使おうとすると引数エラーを返されてしまい途方に暮れた
構造体メンバーには仕様書通りに必要な値をセットしている

しばらくして原因が分かった
関数側は引数が正しくセットされているかを、
処理対象の領域に格納されている同一の構造体と比較しチェックしていた
その比較に memcmp を使っていた
呼び出すこちら側は、構造体を自動変数として領域確保していた
2021/12/01(水) 19:41:43.68ID:Dt37aX+70
構造体の比較をmemcmpでやるの本当にバッドプラクティスだと思うわ
横着せずに比較関数作れと
2021/12/01(水) 20:37:38.80ID:sYF3bwwtM
横着したくなるというか識別子増やすの躊躇させる言語仕様が招く面倒ね
メンバメソッド系はオブ臭く棲み分けに反し今更入れる必要ないと思うけど
一層にぶち撒かず妥当なルールでツール類で拾いやすいサポートネームスペース括りみたいなのがあれば

void bossy(struct *a);
bool bossy.supporter(struct const*a);
2021/12/02(木) 03:58:26.91ID:boATToTk0
素直にC++使っとけ
2021/12/02(木) 15:46:31.22ID:nsbZ2n490
若者のc言語離れ
2021/12/02(木) 15:56:03.63ID:NxRkNBX1d
バブルの頃に努力?修練?ぎやはははだっせー
と言ってたのが結局、日本の致命傷になっちまったな
それを今まだ言ってる堀江みたいなぶっ飛んだキチガイもいるし
どーすんだこれ
2021/12/02(木) 16:51:51.31ID:BMPRSKoA0
>>905
何の話?
日本は米国植民地なので戦後から終わってますよ…
2021/12/02(木) 18:59:50.96ID:boATToTk0
植民地支配がどんなに恐ろしいことか知らないようだな
朝鮮半島に先進国並みのインフラを作ったり
狭い島国に世界最大のメガロポリスができるのと
フィリピンのバナナ農家が受けている仕打ちの違いわかる?
2021/12/02(木) 19:37:18.40ID:+Bf3UEhm0
君はここに来なくて良いから、その代わりに
半島に行って自慢して感謝されてこいよ
2021/12/02(木) 19:51:25.65ID:boATToTk0
わかるかなぁ、わかんねぇだろうなぁ
2021/12/02(木) 21:23:20.96ID:bRKtguKwM
c++のネームスペースさんはadl とかテンプレート混じりでsfiane とか
使うつもりがなくても簡単に誤爆する罠のせいで妥当な実装ではないね
2021/12/02(木) 21:28:04.80ID:BMPRSKoA0
>>909
アングロサクソンのやることはえぐいですね…
でも半島の話はやめたほうがいいですよ、むしろ台湾の話をしたほうがいい(親中派だったら無理かもね)
2021/12/02(木) 21:44:47.29ID:boATToTk0
>>910
うわー 整然と整列された弾薬を蹴飛ばして地雷原と言っちゃう手合いか
2021/12/03(金) 20:20:27.18ID:JS/BWVJ20?2BP(0)

c言語でGUIの作り方教えて
2021/12/03(金) 21:09:10.77ID:qejwogbL0
>>913
http://www.kumei.ne.jp/c_lang/index_sdk.html
2021/12/03(金) 22:17:35.13ID:4DnkKvZO0
>>914
WIndowsAPIはC言語で使うのが正解でC++では使わないっというのを別スレで見たんですが、そうなの?
2021/12/03(金) 22:43:36.48ID:qIm8KpH10
C++でも使う事は出来るが、普通はクラスライブラリを使う
最初はMFCだったかな
>>914のサンプルを試したあと、
C++とクラスライブラリ使って同じ事をやってみると良いカモ
2021/12/03(金) 23:01:33.51ID:4DnkKvZO0
サンクス
2021/12/04(土) 00:32:09.23ID:d5QmhWSv0
>>915
補足すると自前でC++を使ってやる方法も win16 初期には見られたが、
https://www.aa;mazon.co.jp/dp/4774100544/
結局みんな MFC ばかり使うようになりました、もうひとつのメーカー製の OWL ですら滅びたようです
MFC の使い方の本は私は持っていない…
2021/12/04(土) 00:34:51.25ID:d5QmhWSv0
>>913
http://w;isdom.sakura.ne.jp/system/winapi/win32/index.html
2021/12/04(土) 00:37:46.81ID:eEY2XAtO0
使い方って言うほどの高度の内容ではないかも
ドキュメント的にはMSのサイトが本家だし詳しいかも
確かサンプルも載せてたはず

https://docs.microsoft.com/ja-jp/cpp/mfc/documents-views-and-the-framework?view=msvc-170

この辺から入っていくのかな?無事生還を祈る
2021/12/04(土) 00:39:25.21ID:eEY2XAtO0
https://docs.microsoft.com/ja-jp/cpp/mfc/mfc-desktop-applications?view=msvc-170

済まん、こっちが入り口か
2021/12/04(土) 01:16:03.60ID:eEY2XAtO0
C++の、さらなる深みに入りたいなら、こちらのスレの方が良いかも知れない

Microsoft Foundation Classライブラリ専用スレ
https://mevius.5ch.net/test/read.cgi/tech/1474384848/

Visual Studio 2022
https://mevius.5ch.net/test/read.cgi/tech/1634166667/

C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1636969758/
923デフォルトの名無しさん (ワッチョイ e2ad-Z6Z9)
垢版 |
2021/12/04(土) 03:50:46.66ID:2dOPVhNC0
>>913
https://xjman.dsl.gr.jp/X11R6/X11/
2021/12/04(土) 03:52:50.38ID:2dOPVhNC0
>>913
https://developer.android.com/ndk?hl=ja
2021/12/04(土) 03:57:24.10ID:2dOPVhNC0
>>913
https://dixq.net/forum/viewtopic.php?t=10480
2021/12/04(土) 04:06:08.86ID:2dOPVhNC0
>>913
https://teratail.com/questions/43672
2021/12/04(土) 05:37:11.06ID:FSuqUkr60
MFCはWin32 GDIの極薄すけすけのラッパーだ
俺なんかMFCから憶えてそこから多くを知った
2021/12/04(土) 10:14:46.95ID:h5ysN7XFa
WinUIとかもいいけど、MFCに代わるちゃんとしたCなGUIライブラリを用意して欲しかったわ
2021/12/04(土) 11:19:54.80ID:7g1ihlkq0
winuiはイケてないの?
2021/12/04(土) 19:24:30.40ID:d5QmhWSv0
>>927
では win16 時代の本
https://www.a;mazon.co.jp/gp/product/4774100501/
でも何かしら得るものがあるってことですね、最近ちょっと元気が出てきたから買おうかな、やすいし
2021/12/05(日) 00:01:56.83ID:AUNWU2UB0?2BP(0)

913です。
みんなありがとう!!
932デフォルトの名無しさん (ワッチョイ e2ad-Z6Z9)
垢版 |
2021/12/05(日) 02:12:34.65ID:NlN9zBro0
>>930
本が100円でも送料が300円以上だったりするので、古本は要注意。
メルカリで送料込みで安いやつ探した方が良いかも知れない。
(但し、300円以下はあまりない。理由は自分で出品してみると分かる)
2021/12/05(日) 04:30:24.51ID:VQoGm9OLd
47氏こと金子氏はMFCでWinnyを作ったんだな
2021/12/05(日) 15:55:33.73ID:HAXCanWR0
>>933
winny2 は BCC/OWL だったと聞いた気がします
2021/12/05(日) 16:50:16.47ID:VQoGm9OLd
RIP
2021/12/05(日) 18:32:01.15ID:HAXCanWR0
>>932
ありがとうございます!
2021/12/07(火) 05:13:43.34ID:WxNsBn2X0
>>934
金子氏の書籍より、VC++ から C++Builder に GUI の変更を目的に変えた、との記述を見つけました
Borland C++ Builder 4.0, および 5.0 であれば OWL5.0 をサポートしていますが、VCL の可能性のほうが高いですね
2021/12/08(水) 16:27:00.62ID:iGfgkXA80
Windows上で編集してLinux上でコンパイルしたいんだけど
そういうのに適したIDEでお前らが使ってるおすすめを教えて
2021/12/08(水) 18:39:45.04ID:RLv6UJuP0
>>938
vscode
2021/12/08(水) 18:59:09.17ID:GPDURn2W0
Ruby on Rails では、WSL2, Linux, Docker, VSCode(Remote Container, Remote WSL)など、
本物のLinux(CUI)で開発できる。
MSYS2/MinGW みたいなWindows でコンパイルした、日本語でバグるものを使う必要もない

Dockerを使わずに、日本人が作った、バージョンマネージャーのanyenv で、
rbenv, nodenv, pyenv など、多言語を統一的に扱う事もできる

組み込み用mruby の本には、Virtualbox, Vagrant を使う。
WSLはサポートしないと書いてあるけど、WSLでも使えるかも?

Webで使えるmrubyシステムプログラミング入門、近藤宇智朗、2020/11

宇宙開発などの組み込み用、MicroPython, Lua, Squirrel の代替になる。
Ubuntu 18.04, C99 対応

人工衛星イザナギ・イザナミで、使っている
941デフォルトの名無しさん (ワッチョイ ce01-1kDn)
垢版 |
2021/12/08(水) 20:28:27.76ID:pzF9gjPk0
>>940
キヤノンが打ち上げた光学衛星が夜間撮影に成功したそうです。
夜間撮影が出来るとなると、もはや立派なスパイ衛星。
何を撮影しましょう。
942デフォルトの名無しさん (ワッチョイ d910-PP5C)
垢版 |
2021/12/09(木) 11:14:02.01ID:89810ylo0
実用的なところで夜間に移動する北のミサイル発射トラック追尾。

個人的希望でgoogleカーの追尾。
2021/12/09(木) 13:22:59.56ID:avfziXHId
頭頂部が日に日に薄くなっていくような気がするから
その辺のチェックを毎日やってほしい
2021/12/09(木) 13:26:11.16ID:NPIqJHRg0
>Linux上でコンパイルしたい

Linuxのシェル上でコンパイルしたいという意味?
それともGCCを使いたいという意味?
2021/12/10(金) 02:07:06.32ID:Uh57IFJZ0
そう言えば以前 Windows で動く IDE で Linux で動くプログラムの編集をしてそのまま
リモートで Linux 側でコンパイルして更にリモートでデバッグまでできれば良いなと
思ったが、どうやらそれができるものはなさそうなので諦めて Linux 上で IDE を動かした。

まあでもクロス開発というか、リモートデバッグというか、そういうのが出来ると便利だよな。
2021/12/10(金) 09:42:22.14ID:bMtT4XMq0
>>944
Linuxにインストールしてあるgccでコンパイルしたい
ビルドボタン押したらssh経由でmakeできたら素敵だが

使ってるgccのバージョンがちょっとどころじゃなく古いので
できればMinGW gccとかじゃなくて現物のgcc使いたい感じ
2021/12/10(金) 11:35:51.37ID:vRQI3bYg0
上でも書いたけど vs code ではダメなの?
ターゲットが WSL、コンテナ、ssh 接続関係なく
Win 環境から編集、コンパイル、デバッグ一通りなんでもできるよ。
2021/12/10(金) 14:06:37.92ID:bMtT4XMq0
そこまでおっしゃるのなら、試してさしあげてもよろしくってよ?
2021/12/10(金) 15:29:28.42ID:IPFkCC9z0
歯ね
2021/12/10(金) 18:11:12.39ID:7gXx5u630
羽?
2021/12/10(金) 18:59:12.87ID:wbbsNkrV0
教えて差し上げて
952デフォルトの名無しさん (ワッチョイ dfad-8/hI)
垢版 |
2021/12/11(土) 03:38:45.47ID:LF8J+dNV0
>>945 を昨日書いたが、さっきこんなの見つけた。有料だけどな。

JetBrains、リモート開発機能と軽量IDE「Fleet」を発表
https://japan.zdnet.com/article/35180131/
2021/12/11(土) 13:26:00.16ID:iDGs+tOs0
漏れは、Ruby on Rails, WSL2, Ubuntu 18.04 で、
Web Socket など、Railsで使う各モジュールがネイティブコンパイルされるけど、

build-essential とか入れておけば、
Rails のインストール時に、勝手にコンパイルされる

build-essential には、
gcc(GNU C compiler), g++(GNU C++ compiler), libc6-dev(GNU C Library), make などが入っています

パッケージ: build-essential
https://packages.ubuntu.com/ja/bionic/build-essential

43.0 MB のアーカイブを取得して、165 MB のディスク容量が使われます
2021/12/11(土) 22:36:35.78ID:KvUnFidtd
VS2022に昔のプログラム持ってったら
isspace()とかに80h以上の文字入れると例外になるけど
いいのかこれ
テーブルで処理してて80h以上は負だからテーブル外になるって理由はわかるんだけどさあ
昔のはなんとかうまくやってた気がするんだけど
2021/12/12(日) 01:29:13.77ID:xqkchTt80
>>954 それ char で負の値を渡してるんじゃね?
2021/12/12(日) 01:30:08.80ID:xqkchTt80
>>954 この話ね https://www.jpcert.or.jp/sc-rules/c-str37-c.html
2021/12/12(日) 06:11:48.38ID:i1KpRZU20
>>954
int isspace(int c)
ですよ、ちゃんと int の正の数で渡してます?char をまんま渡してたらまずいっすよ

>>956
「unsigned char にキャストして、暗黙の型変換(プロモーション)に頼る」ってかなりアクロバットに見えますね
2021/12/12(日) 11:16:13.91ID:553p9mhC0
char が符号付か符号無しかは処理系定義で、
符号無しであるような処理系では char が int に拡張されたときに負数になることはない。
(考慮する必要はない。)

C にはそういう処理系定義とか未規定とか未定義がもりだくさんなので
ある処理系の定義では未定義を踏まずに済むプログラムでも
別の処理系では (処理系定義のコンボで結果的に) 未定義に引っかかることはよくある。

C のプログラムで完全に処理系定義や未規定を避けるというのは困難な話だし、
(可能なら環境依存を避けるように意識するのは良い作法ではあるけど)
違う環境に持ってきたらその程度の修正は必要なものだと思って諦めるしかしょうがない。
2021/12/12(日) 11:27:28.68ID:0XY4m15b0
未規定を避ける必要はない
未規定のブレ幅以内に収まるように書いてあるプログラムは適格
そうでないプログラムは不適格で未定義の動作となるだけだ
2021/12/12(日) 17:20:11.74ID:lpH8MLUG0
未規定と、明示的な未定義は違うのか?
2021/12/12(日) 17:33:46.14ID:0XY4m15b0
違う。

たとえば
int f1(), f2();
int a = f1() - f2();
のようなことをしているとき、
f1とf2の評価順序は未規定
f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
2021/12/12(日) 17:44:58.99ID:Qvw+czy00
未規定って処理系毎に好きに実装して良いんでしたっけ?
2021/12/12(日) 17:55:44.75ID:YDRHEr6M0
処理系が好きに実装してよいし, ひとつの処理系の中で一貫している必要も, ドキュメントに明記する必要もない
2021/12/12(日) 17:58:06.91ID:Qvw+czy00
未定義動作だと、最悪SEGVでも良いようなオイ
2021/12/12(日) 17:59:00.60ID:YDRHEr6M0
SEGVはマシな方なんですが
2021/12/12(日) 18:09:59.00ID:553p9mhC0
>>962
未規定な動作を含むプログラムは正しい。
あり得る動作の内のどれかにはなる。

未定義はどんな保証もない。
未定義の挙動を含むプログラムはプログラム全体がどんな動作をするかわからん。
全然関係ないと思う箇所でわけわからん動作になることもあるし、
未定義を踏んでる箇所より前に問題が表れることもないとはいえない。

>>963
処理系定義は「未規定の動作のうち,各処理系が選択した動作を文書化するもの。」ということになっている。
つまり処理系定義は未規定の一種という扱い。
2021/12/12(日) 18:12:53.56ID:aAJ0FK40M
>>962
処理系どころか同じソースでもコンパイル毎に変えることすら許される
2021/12/12(日) 19:00:18.24ID:xqkchTt80
>>961
> f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
これは嘘じゃね?
2021/12/12(日) 23:13:30.38ID:VXD697/Q0
>>968
いやあってる
演算子の結合規則・優先順位は、あくまでも複数の演算子があったときにどの演算子を先に処理するか、に過ぎない
オペランドを二つ持つ演算子一つに限れば、どっちのオペランドを先に評価するかは処理系依存だったと思う
これは関数の引数についても同じ
2021/12/12(日) 23:20:10.63ID:xqkchTt80
>>969
だれも結合優先度の話はしてないと思う。

> f1とf2の評価順序は未規定
これについては未規定で異論は無いんだよ。
> f1とf2の評価順序によりaに入る値が変動する場合は未定義の動作だ
でも、こっちは嘘じゃね?という話。そんな規定文面確認できない。
2021/12/13(月) 00:34:13.21ID:0Z9P9uJp0
C17Draftのpp.65 6.5 1では?

> If a side effect on a scalar object is unsequenced relative to either a different side effect on the same scalar object or a value computation using the value of the same scalar object, the behavior is undefined.
> If there are multiple allowable orderings of the subexpressions of an expression, the behavior is undefined if such an unsequenced side effect occurs in any of the orderings.
2021/12/13(月) 01:22:45.02ID:aR9zk0xx0
>>971
複数の関数呼び出し先にある評価同士、あるいは呼び出し元と呼び出し先にある評価同士は
indeterminately sequenced となり、 unsequenced にはならない。
6.5.2.2 Function calls p10
> ... Every evaluation in the calling function (including other function calls)
> that is not otherwise specifically sequenced before or after the execution of the body of the called
> function is indeterminately sequenced with respect to the execution of the called function. 96)
...
> 96) In other words, function executions do not “interleave” with each other.

>961 の f1, f2 は関数なので、 f1() - f2() の結果が未規定だからといって未定義動作にはならない。
2021/12/13(月) 02:53:30.01ID:0Z9P9uJp0
>>972
OK, 関数呼び出しを噛ませたことで評価順序が未規定ではなく不定(一方が他方の後(先)であることは保証される)になるので, 呼出先関数で副作用があっても(結果は未規定だが)未定義動作ではない, と
確かによくある a = i++ + ++i; みたいな例が適切だったか
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況