C言語なら俺に聞け 163 (985レス)
C言語なら俺に聞け 163 http://mevius.5ch.net/test/read.cgi/tech/1721137434/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
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
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
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.566s*