我想知道我们是否可以强制使用std :: cin,因此它不会在数据类型之间执行任何隐式转换,例如:
unsigned int number;
cout<<"Please input a number :";
if(std::cin>>number)cout<<std::endl<<"Good number";
else cout<<"Bad number";
因此,如果你打-23或26.3,它只会执行隐式转换并将值存储在number
中,这不是我想要的。那么我们可以阻止它吗?
由于
答案 0 :(得分:2)
cin
会将值存储到您提供的数据类型中。 unsigned int
不会使用signed
个数字,因此它会溢出到最大的unsigned int
或0
。在您的示例中,您提供的double
常量不是unsigned int
。如果您希望按照预期的方式工作,请将unsigned int
更改为double
。
答案 1 :(得分:0)
cin
将始终执行该转换;这不是你能控制的东西。我建议将值读入字符串并检查.
或-
,然后从那里继续。