如果输入类型与目标类型不同,"cin"变量是否重置为某个默认值?
Does "cin" reset variable to some default value if input type differs from destination type?
我对"cin"的行为有问题(我不明白(。 我的IDE是Windows操作系统下的Netbeans(使用Cygwin(。
下面是一个代码示例:
int main()
{
int temp = -1;
std::cin >> temp; // here user enters string of characters (string) or a single character
if (temp == 0)
std::cout << "temp = " << temp << ".n";
if (temp == -1)
std::cout << "temp = " << temp << ".n";
return 0;
}
如果我输入某种字符/字符串,此代码将显示消息temp = 0。这就像char
转换为int
并且转换总是以值0结尾。
如果您能解释此行为,谢谢。
这是std::basic_istream::operator>>
的预期行为;因为C++11如果提取失败,变量将被设置为0。在 C++11 之前,变量不会被修改,其原始值将保持不变。
如果提取失败(例如,如果在数字 预期(,值保持不变,并设置故障位。 (至C++11(
如果提取失败,则将零写入值并设置故障位。如果 提取导致值太大或太小而无法容纳 值、标准::numeric_limits::马克斯(( 或标准::numeric_limits::分钟(( 已写入并设置故障位标志。(自C++11起(
如果读取失败operator>>
会将值设置为零(cpp首选项(:
如果提取失败,则将零写入值并设置故障位。
相关文章:
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- 如果输入类型与目标类型不同,"cin"变量是否重置为某个默认值?
- 具有默认类型和值的模板参数
- 具有默认值的参数的自动类型扣除
- 根据模板参数的默认值启用模板参数类型的自动扣除
- 为 vardiac 和普通模板设置类型名称默认值
- 调用类型的标记构造函数(如果可用),否则为默认值
- 未知模板类型的默认值或零值
- 基本类型的std ::向量的默认值
- AnsiString作为Embarcadero C++Builder中字符串类型的默认值
- 如何获取任何类型的默认值
- 为LONGLONG类型指定默认值.明戈GCC
- 如果我在 C++ 中为 "std::string &" 类型的参数指定默认值,这会导致内存泄漏吗?
- 如何将未知类型的数据成员初始化为默认值
- 涉及嵌套模板参数和默认值的模板类型推导
- C++数值类型的非零默认值 - 重塑
- 如何在编译时通过模板形参默认值的名称/指针获取函数的类型
- 模板默认类型vs默认值
- 内置类型的模板参数默认值
- c++中POD类型的默认值和值初始化