-1
出力が期待どおりでない理由を説明できる人はいますか? 私は16を期待したが0から始まる14Intプログラムのデータ型が予期しない出力になる可能性があります。
#include<stdio.h>
int main()
{
int x=016;
printf("%d",x);
return 0;
}
出力が期待どおりでない理由を説明できる人はいますか? 私は16を期待したが0から始まる14Intプログラムのデータ型が予期しない出力になる可能性があります。
#include<stdio.h>
int main()
{
int x=016;
printf("%d",x);
return 0;
}
数値リテラルは8進数として解釈されました。
6.4.4.1整数
3定数...進定数は、任意の数字のみ0〜7のシーケンスが続く接頭辞0から成ります。 ...
例:016
(8塩基)==>0
×8^2 + 1
×8^1 + 6
×8^0 ==> 0 + 8 + 6 ==>14
(10塩基)
は、int
の値を10個のベースで出力するので、結果は14
です。
%o
を使用してint
を8進数として出力すると、16
が得られます。
例えば
int x = 016;
printf("%#o", x);//016
したい場合は3桁との結果が%d
、
printf("%03d", 16);//016
を使用して0
をリードするフォーマット文字列の詳細については、printfのリファレンスを参照してください含まれています。
「016」は、8進数を意味します。 – BLUEPIXY
何が期待されましたか? – chux
あなたは16を期待していましたが、14がありましたか? –