[過去ログ]
C言語なら俺に聞け 163 (1002レス)
上
下
前
次
1-
新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
371
:
はちみつ餃子
◆8X2XSCHEME (ワッチョイ f732-hCSs)
2024/11/25(月)02:42
ID:EAdMpn4b0(1/2)
AA×
>>367
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
371: はちみつ餃子◆8X2XSCHEME (ワッチョイ f732-hCSs) [sage] 2024/11/25(月) 02:42:55.67 ID:EAdMpn4b0 >>367 言語仕様的に解釈すると…… シフト演算子の結果の型は左オペランドを整数拡張した後の型と同じになる。 整数リテラルは int の範囲で表せる限り int なので 1 は int 。 int は整数拡張の必要がないので 1<<31 の結果の型も int 。 そして結果の型が signed かつ結果の値が結果の型で表現可能な範囲にないときの動作は未定義なので 2147483648 が int (おそらく質問者の環境では 32 ビット) の最大値である 2147483647 を越えていて未定義の挙動となる。 不定とか処理系定義ではなく未定義と明記されてる。 つまり言語仕様上は何が起きても良いということ。 http://mevius.5ch.net/test/read.cgi/tech/1721137434/371
言語仕様的に解釈すると シフト演算子の結果の型は左オペランドを整数拡張した後の型と同じになる 整数リテラルは の範囲で表せる限り なので は は整数拡張の必要がないので の結果の型も そして結果の型が かつ結果の値が結果の型で表現可能な範囲にないときの動作は未定義なので が おそらく質問者の環境では ビット の最大値である を越えていて未定義の挙動となる 不定とか処理系定義ではなく未定義と明記されてる つまり言語仕様上は何が起きても良いということ
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 631 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
ぬこの手
ぬこTOP
0.032s