Val*_*ina 4 c++ scanf cin visual-c++-2010
我有一个输入字符串"0100"
为什么scanf("%i", &n);返回64和cin >> n; 给我100?为什么cin以十进制值表示,scanf以八进制表示?
对于说明
i符:任意数量的数字,可选地以符号(+或-)开头.默认情况下假定的十进制数字(0-9),但0前缀引入八进制数字(0-7),并0x引入十六进制数字(0-f).- scanf - C++参考
由于你以100a 为前缀,0因此它被读作八进制而不是十进制.
你介意加入
cin >> setbase(0) >> n你的答案吗? - 尼基C.
// cin input: 0100
// base | n ='s
// ----------------------
cin >> setbase(0) >> n // *see below | 64
cin >> setbase(8) >> n // octal | 64
cin >> setbase(10) >> n // decimal | 100
cin >> setbase(16) >> n // hexadecimal | 256
Run Code Online (Sandbox Code Playgroud)
* 呼叫setbase( x )在哪里x不相等8,10或16与呼叫相同setbase(resetiosflags(ios_base::basefield)).如果输入cin将被读作C文字,意味着前缀为0八进制,0x则为十六进制,没有前缀为十进制.