Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ scanf vs cin:字符串作为整数处理_C++_Scanf_Cin_Visual C++ 2010 - Fatal编程技术网

C++ scanf vs cin:字符串作为整数处理

C++ scanf vs cin:字符串作为整数处理,c++,scanf,cin,visual-c++-2010,C++,Scanf,Cin,Visual C++ 2010,我有一个输入字符串“0100” 为什么scanf(“%i”和&n)返回64和cin>>n;给我100?为什么cin用十进制值思考,而scanf用八进制值思考 对于i说明符:任意数量的数字,可以选择前面有符号(+或-)。 默认情况下采用十进制数字(0-9),但前缀引入八进制数字(0-7),而0x引入十六进制数字(0-f) 由于您在100前面加了0前缀,因此它被读取为八进制而不是十进制。 更新: 您是否介意在您的答案中添加cin>>挫折(0)>>n尼基C *调用setbase(x)其中x不等于8,

我有一个输入字符串“0100”

为什么
scanf(“%i”和&n)
返回64和
cin>>n
;给我100?为什么cin用十进制值思考,而scanf用八进制值思考

对于
i
说明符:任意数量的数字,可以选择前面有符号(
+
-
)。 默认情况下采用十进制数字(
0-9
),但前缀引入八进制数字(
0-7
),而
0x
引入十六进制数字(
0-f

由于您在
100
前面加了
0
前缀,因此它被读取为八进制而不是十进制。

更新:
您是否介意在您的答案中添加
cin>>挫折(0)>>n
尼基C

*调用
setbase(x)
其中
x
不等于
8
10
16
与调用
setbase(resetiosglags(ios_base::basefield))
是一样的。其中,
cin
的输入将被读取为
C
文本,这意味着
0
的前缀将是八进制,
0x
将是十六进制,并且没有前缀将是十进制。

使用
%d
,然后
scanf
也可以用十进制<代码>%i本质上是“C整数文字规则”的意思。您是否介意添加
cin>>setbase(0)>>n//                           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