C言語を学びたいんやが、まず何からやればいい? (43レス)
C言語を学びたいんやが、まず何からやればいい? http://mevius.5ch.net/test/read.cgi/tech/1645503621/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
24: デフォルトの名無しさん [] 2024/08/12(月) 08:03:23.19 ID:+jMHtzbv >>23 それは評価順が未規定なのでコンパイラによって結果は変わり得るし、基本的に避けるコードですね 後置インクリメントは「元の値を返した後に加算される」で、そのタイミングは正確には行の終わりじゃなくて式 (a++の部分) の評価時 つまり a + a++ は「a++ は1を返す」と評価した後にaがインクリメントされるので、評価順によっては左側のaが2になり得る x + y でxを先に評価するというルールはなくて、例えば func(x) + (y + z) は y + z の計算が func(x) より先に行われても問題ないし、それはコンパイラ次第 http://mevius.5ch.net/test/read.cgi/tech/1645503621/24
25: デフォルトの名無しさん [] 2024/08/12(月) 08:16:55.01 ID:+jMHtzbv コンパイラのワーニングレベルを上げると警告を出してくれると思うので、有効にすると良いと思う 慣れてる人でも「これはこの動作になるはず」と思い込んでバグに繋がることはあるし、しかもこの手のものは原因を見つけづらいので http://mevius.5ch.net/test/read.cgi/tech/1645503621/25
26: デフォルトの名無しさん [] 2024/08/12(月) 08:29:35.82 ID:+jMHtzbv b= func(a) + a++; なんかも危ない 見かけ上多くの人はfuncの引数は加算前のaだと思い込むし、 b = a++ + func(a); はその逆だと思うけど、実はどちらも保証されてない 逆に論理演算は短絡評価される規定がある z = x && y; は x が FALSEの時点で全体の決まるので、その場合にyは評価されないことが規定されている z = x != NULL && func(*x); が安全なのもこれが理由 http://mevius.5ch.net/test/read.cgi/tech/1645503621/26
28: デフォルトの名無しさん [] 2024/08/12(月) 10:26:19.22 ID:+jMHtzbv >>27 https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf これの71ページ目 (PDFの84ページ目) の 6.5.13 Logical AND Operator の 4 の段落 http://mevius.5ch.net/test/read.cgi/tech/1645503621/28
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.028s