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