#2
by みけCAT » 7年前
lily さんが書きました:この場合、char型で宣言したのに%dで出力するのはいいのでしょうか?
printf(など)の型が与えられていない可変個の引数の部分では、integer promotionによりchar型のデータはint型に変換されるので、大丈夫です。
(
N1570 6.3.1.1 Boolean, characters, and integersの2、6.5.2.2 Function callsの6)
lily さんが書きました:この出力の-128になる部分はなぜ-128になるのでしょうか?
このコードは
・符号付き整数のオーバーフロー
・値の更新と参照の順序が確定しない
という未定義動作があるので、出力されたアセンブリ言語を読むなどしないとなぜこの環境で-128になるのかの説明は難しいかもしれません。
[quote="lily" id=3,19938,149611]この場合、char型で宣言したのに%dで出力するのはいいのでしょうか?[/quote]
printf(など)の型が与えられていない可変個の引数の部分では、integer promotionによりchar型のデータはint型に変換されるので、大丈夫です。
([url=http://chimera.roma1.infn.it/SP/COMMON/iso-iec-9899-1990.pdf]N1570[/url] 6.3.1.1 Boolean, characters, and integersの2、6.5.2.2 Function callsの6)
[quote="lily" id=3,19938,149611]この出力の-128になる部分はなぜ-128になるのでしょうか?[/quote]
このコードは
・符号付き整数のオーバーフロー
・値の更新と参照の順序が確定しない
という未定義動作があるので、出力されたアセンブリ言語を読むなどしないとなぜこの環境で-128になるのかの説明は難しいかもしれません。