当前位置:C++技术网 > 资讯 > [数据类型使用错误]这个是为什么?求大大帮忙看看,解答一下,谢谢大大们了

[数据类型使用错误]这个是为什么?求大大帮忙看看,解答一下,谢谢大大们了

更新时间:2016-10-10 09:26:45浏览次数:1+次

三个变量,用cin从键盘输入,为什么我只能输入两次,而且输入37、19时,为什它把3、7、1分别存储到了那个变量里呢?



C++技术网解答:

    数据类型错误使用问题:用char字符变量接受数值输入,而cin自动将输入的数字当成多个字符了。

    存储数值不要使用char类型。此处应该使用float或者double类型来存储,如果没有小数点,使用int等也可以。不过从代码可以看出,你这个最好还是用double,不用类型转换,所有数据都保持一致是最好的。这是第一个错误的点。

    第二个就是,对于cin的工作方式没有理解到位。cin是一个基本输入的类对象,作为基本输入操作使用,就和scanf差不多。cin并不是基本操作符。而且cin对基本类型都进行了重载实现,所以会自动根据变量的类型提取对应的输入数据。因为你给定的三个变量是char类型,所以cin在给变量提取输入的数据的时候,就是按照char字符来提取的。所以输入的37 19在输入流里也就被看成了4个字符 3 , 7 , 1 , 9 。这样也就分别赋值给了三个变量,也就是你看到的三个输出。

    所以,这个问题关键错误就在于数据类型使用不当,而cin又自动根据类型匹配输入了。改进的办法最简单的就是使用正确的数据类型即可。

    进阶理解:我们从键盘输入的数据,都是以单个的字符放入了输入流里的。不过这些输入的内容到底是数字还是字符,这个就看接受输入需要的类型而定。我们只要按照我们需要的类型提取就行了。我们这里输入的是37和19,表面上看到的是两个数字,实际上在输入流里分别是4个字符编码。而所谓的字符,在内存中也是数字。如果按照数字来提取就分别提取到了37和19,如果按照字符提取就是四个字符。基本上就是这个意思。