C言語なら俺に聞け 163 (977レス)
C言語なら俺に聞け 163 http://mevius.5ch.net/test/read.cgi/tech/1721137434/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
1: デフォルトの名無しさん (ワッチョイ 7bba-Lem2) [] 2024/07/16(火) 22:43:54.18 ID:ZrsCjURC0 !extend:checked:vvvvv:1000:512 (新スレ立ての際上記コマンドを2行書き込んでください) C言語の話題のみ取り扱います C++の話題はC++スレへ 質問には最低限の情報(ソース/コンパイラ/OS)を付ける 数行で収まらないソースは以下を適当に使ってURLを晒す https://paiza.io/ https://ideone.com/ http://codepad.org/ C17 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf C11 http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf C23 最新ドラフト https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.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言語なら俺に聞け 162 https://mevius.5ch.net/test/read.cgi/tech/1698653580/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured http://mevius.5ch.net/test/read.cgi/tech/1721137434/1
953: デフォルトの名無しさん (ワッチョイ 6776-7F+n) [sage] 2025/07/23(水) 19:09:07.95 ID:trP3on0s0 老人がGPTと会話して寂しさを紛らわせてるという話をラジオで聞いて愕然としたわ 会話に女性言葉を使うように教育してるらしいw http://mevius.5ch.net/test/read.cgi/tech/1721137434/953
954: デフォルトの名無しさん (ワッチョイ 7f2a-FKn4) [sage] 2025/07/23(水) 19:46:57.29 ID:GgPu1M5y0 愕然としたのは、どちらに対してなのか。 (1)老人がGPTと会話して寂しさを紛らわせてる (2)会話に女性言葉を使うように教育してる どちらもそう驚くような事ではないような気がする。 http://mevius.5ch.net/test/read.cgi/tech/1721137434/954
955: デフォルトの名無しさん (ワッチョイ 275f-Bd2j) [sage] 2025/07/23(水) 19:48:56.05 ID:GY0NWQeb0 >>953 もう終わりだ猫の国・・・ http://mevius.5ch.net/test/read.cgi/tech/1721137434/955
956: デフォルトの名無しさん (ワッチョイ bfc6-Wb7d) [sage] 2025/07/23(水) 20:14:36.18 ID:1KYXdV2G0 >>953 気付いてないかもだけど 今のおまえがその状態だぜ? ねらーとして教育された俺らAIと会話してるだろ http://mevius.5ch.net/test/read.cgi/tech/1721137434/956
957: デフォルトの名無しさん (ワッチョイ ff44-k2hJ) [] 2025/07/23(水) 20:30:44.96 ID:+gAzCYHm0 すごい久しぶりにプログラム書いててわからないことがあるので教えてください。 OSはwindows11、WSLのdebianを利用していてgccのバージョンは12.2.0です。 int i = 0; char str1[] ="abcd"; char str2[] = "12,"; while((str1[i] = str2[i++]) != ','){} printf("%s\n",str1); 上記を実行すると「a12,」となります。 whileの条件式内で、str2[0]がstr1[1]に代入、str2[1]がstr[2]に代入...という感じだと思うのですが whileの行をwhile((str1[i++] = str2[i]) != ','){}に置き換えると結果が「2,cd」になるのがわかりません。 自分的には、str2[0]がstr1[0]に代入、str2[1]がstr1[1]に代入...となり「12,d」になると思ったのですが… http://mevius.5ch.net/test/read.cgi/tech/1721137434/957
958: デフォルトの名無しさん (ワントンキン MMbf-2Ztb) [sage] 2025/07/23(水) 20:50:21.05 ID:2qHIY8UIM >>953 AIキャバクラ流行りそう http://mevius.5ch.net/test/read.cgi/tech/1721137434/958
959: デフォルトの名無しさん (ワッチョイ bf5f-cpV+) [] 2025/07/23(水) 20:55:02.21 ID:e3NYz5GR0 #include <stdio.h> int main(void){ int i = 0; char str1[] ="abcd"; char str2[] = "12,"; //while((str1[i] = str2[i++]) != ','){} while((str1[i] = str2[i]) != ','){i++;} printf("%s¥n",str1); } 普通こう書くだろ.clangだと 1.c:6:24: warning: unsequenced modification and access to 'i' [-Wunsequenced] 6 | while((str1[i] = str2[i++]) != ','){} | ~ ^ 1 warning generated. と怒られるわ. http://mevius.5ch.net/test/read.cgi/tech/1721137434/959
960: デフォルトの名無しさん (ワッチョイ ff44-k2hJ) [] 2025/07/23(水) 21:22:42.87 ID:+gAzCYHm0 >>959 ありがとうございます。 書き込み後、演算子の優先順位について調べたところむしろ後者の方が正しいっぽいことがわかりました。 またコンパイラ時に-Wallオプションをつけると前者ではwarning: operation on 'i' may be undefined [-Wsequence-point]という警告が出ました。 色々調べた結果面倒くさいので言われた通りwhileの条件式内で安易に++と使わないという結論に至りました。 皆様ありがとうございました! http://mevius.5ch.net/test/read.cgi/tech/1721137434/960
961: デフォルトの名無しさん (ワッチョイ df56-Og3R) [sage] 2025/07/24(木) 01:19:31.21 ID:UloxWUsk0 >>957 ループとは関係無く str1[i] = str2[i++] だけで未定義動作となる。warning はこのことを言っている。C言語 FAQ 3.1, 3.8 辺り。 http://mevius.5ch.net/test/read.cgi/tech/1721137434/961
962: デフォルトの名無しさん (ワッチョイ bf2d-wD34) [sage] 2025/07/24(木) 01:37:43.61 ID:TlZSn1hO0 最近は多少冗長に見えても優先度とか考えなくてもすらっと読めるコード書くわ ループの条件に副作用入れない http://mevius.5ch.net/test/read.cgi/tech/1721137434/962
963: デフォルトの名無しさん (ワッチョイ 875f-Amq+) [sage] 2025/07/24(木) 08:41:37.63 ID:oNGIO7CX0 オートインクリメント、オートデクリメントの副作用の話か 同一ステートメントに書くと見た目の順番と違う結果になるって奴な んなもん江戸時代から言われてんだろ http://mevius.5ch.net/test/read.cgi/tech/1721137434/963
964: デフォルトの名無しさん (ワッチョイ dff2-IWxR) [] 2025/07/24(木) 10:45:19.14 ID:wqvn4Vxa0 普通に小学生でも読める算術式で書けよ 何のためにコンパイラが頑張ってると思ってんだよ アセンブラ使いじゃああるまいし http://mevius.5ch.net/test/read.cgi/tech/1721137434/964
965: デフォルトの名無しさん (ワッチョイ 272a-FKn4) [sage] 2025/07/24(木) 11:03:54.12 ID:jHINgk3r0 いっそ for 文に... いえ何でもないです... //while((str1[i] = str2[i++]) != ','){} //while((str1[i] = str2[i]) != ','){i++;} for (; (str1[i] = str2[i]) != ','; i++) {} http://mevius.5ch.net/test/read.cgi/tech/1721137434/965
966: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0732-geQ+) [sage] 2025/07/24(木) 12:40:38.15 ID:QLFMUI9/0 C99 だと 6.5 に書いてある制約だ。 (以下は JIS からの抜粋) > 直前の副作用完了点から次の副作用完了点までの間に, > 式の評価によって一つのオブジェクトに格納された値を変更する回数は, > 高々1回でなければならない。 > さらに,変更前の値の読取りは,格納される値を決定するためだけに行われなければならない。 この後段の部分が分かり難いんだが脚注に例がある。 > この段落の規定によると, > i = i + 1; > a[i] = i; > は許されるが, > i = ++i + 1; > a[i++] = i; > は,未定義の式文である。 ちなみに C では「〜しなければならない」という表現はそれを守っていないプログラムの挙動は未定義という意味。 http://mevius.5ch.net/test/read.cgi/tech/1721137434/966
967: デフォルトの名無しさん (ワッチョイ df0a-WCdg) [] 2025/07/24(木) 18:51:03.75 ID:bvlLnJ990 そんな可読性の低いコードを書くのはかなりの変人だしな http://mevius.5ch.net/test/read.cgi/tech/1721137434/967
968: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 0732-wrhS) [sage] 2025/07/24(木) 21:58:08.95 ID:QLFMUI9/0 ひとつの単純な背景として昔は画面が狭かったということがある。 無理に詰め込んででもひとつの画面内で多くを見れるほうが可読性が高かった。 C が最初に登場した頃ならまだテレタイプ端末もそれなりに使われていたかな。 今ではあえて詰め込む必要はもう無いし、結局は時流に合わせるしか仕方がないのだが……何十年も前のコードを読む機会もあるのが C という言語なので普段は使わなくても知識として持っておくに越したことはないよ。 http://mevius.5ch.net/test/read.cgi/tech/1721137434/968
969: デフォルトの名無しさん (ワッチョイ 5f65-BzSr) [sage] 2025/07/25(金) 08:36:22.41 ID:D7FikuaG0 Cは未定義や不定を50年も放置している不完全言語ですからね http://mevius.5ch.net/test/read.cgi/tech/1721137434/969
970: デフォルトの名無しさん (ワッチョイ 0788-HXVF) [sage] 2025/07/25(金) 13:32:45.43 ID:BONr3CXd0 未定義や不定を避けて書けるようになるまで、cを使ってはならない http://mevius.5ch.net/test/read.cgi/tech/1721137434/970
971: デフォルトの名無しさん (ワッチョイ 7f98-7F+n) [sage] 2025/07/25(金) 14:46:16.09 ID:fOKAZPz70 CなんかAIに聞きながらやったらなんだってパーフェクトな解答示してくれるよ http://mevius.5ch.net/test/read.cgi/tech/1721137434/971
972: デフォルトの名無しさん (アウアウウー Sa2b-HBOg) [] 2025/07/25(金) 15:56:16.47 ID:ragLZ8kba 条件式の[]の中で[i++]みたいなことはまずしないつもりでも *q++=*p++; なことはやるんだよな で while(*q++=*p++){} 行き着く http://mevius.5ch.net/test/read.cgi/tech/1721137434/972
973: デフォルトの名無しさん (ワッチョイ 875f-Amq+) [sage] 2025/07/25(金) 16:29:44.74 ID:4H/J6x/d0 単一ステートメント内で同じ変数を複数箇所で参照しての++の使い方が問題なだけだぞ http://mevius.5ch.net/test/read.cgi/tech/1721137434/973
974: デフォルトの名無しさん (ワッチョイ bf7e-wD34) [sage] 2025/07/25(金) 16:42:06.69 ID:EN2Q4Hd70 >>971 例えばロックフリーの実装させてみ? でそれ正しいものか判定してみ? http://mevius.5ch.net/test/read.cgi/tech/1721137434/974
975: デフォルトの名無しさん (ワッチョイ 5fc7-BzSr) [sage] 2025/07/25(金) 20:39:28.29 ID:D7FikuaG0 >>971 あいつらいつもいつもcloseとかfree忘れるで http://mevius.5ch.net/test/read.cgi/tech/1721137434/975
976: デフォルトの名無しさん (ワッチョイ 6720-Of8f) [sage] 2025/07/26(土) 13:14:43.02 ID:HcvkYRZY0 大抵のOSではプログラム終了したらメモリは解放されるしファイルもcloseするから短いプログラムでは敢えてfreeもcloseもやらない流儀もあるぞ http://mevius.5ch.net/test/read.cgi/tech/1721137434/976
977: デフォルトの名無しさん (ワッチョイ bf70-wD34) [sage] 2025/07/26(土) 17:25:26.72 ID:m01U1K3m0 勝手に前提増やしてどやるアホ http://mevius.5ch.net/test/read.cgi/tech/1721137434/977
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.021s