为什么要使用“ int input {0};” 而不是“ int intput”;

阿尔特姆

我已经开始从learncpp.com学习c ++。

解释函数的第二课中,第一个示例中有一个奇怪的变量初始化:int input{ 0 };

我的IDE(CLion)声明:>预期为“;” 在声明的末尾。

如果我运行此代码(使用gcc),则效果很好。如果删除括号也一样。

那么{}变量名后面的含义是什么

这是完整的示例:

#include <iostream>

int getValueFromUser()
{
    std::cout << "Enter an integer: ";
    int input{ 0 };
    std::cin >> input;  

    return input;
}

int main()
{
    int num { getValueFromUser() };

    std::cout << num << " doubled is: " << num * 2 << '\n';

    return 0;
}
迈克尔·乔达基斯

标题具有误导性,也许您想问{0}和= 0之间的区别,而不是为什么要初始化变量。请澄清问题。

int x{0};将变量初始化为0,等于int x = 0;这是C ++ 11中添加的功能。

最佳实践包括初始化发生在变量中。如果保留整数而不进行初始化,并且由于它没有默认构造函数,则编译器将不会初始化它。

这意味着到您使用时,它将具有未定义的值。如果您第一次写入它,这可能不是问题,但是如果您忘记它尚未初始化并假定它具有默认值,则可能是一个严重的问题。

这是在代码中多次看到的小错误:

int n;
int factorial;
cin >> n; 
for(int i = 1; i <=n; i++)
    factorial *= i; // Whops, factorial started with undefined value 

正确的是当然要用1初始化它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么要使用int而不是bool的转换?

为什么 type(((),)[0]) 是元组而不是 int?

为什么要使用int [] a = new int [1]而不是仅仅使用int a?

为什么0XAA是无符号的int而不是int?

为什么要使用int / int = int?

函数内的 int(intput()) 不起作用?

为什么Python不可变类型(例如int,str或元组)需要使用__new __()而不是__init __()?

为什么接口内的 Int 不是 Int?

0在PowerShell中不是[int]?

为什么要在循环中使用foreach而不是for(int i = 0; i <length; i ++)?

为什么Realm使用RealmOptional <Int>而不是Int?可选属性?

为什么要(“ 0” +“ 1”)。toInt()!返回1作为Int,而不是0

内存浪费?如果main()应该只返回0或1,为什么main是用int而不是short int甚至char声明的?

为什么JVM为什么使用全0的巨数int []?

为什么强制转换为int给我8而不是0?

为什么Elm 0.19中的“ remainderBy 0 100”返回NaN,而不是Int?

为什么数据表中INT0的向量数是1而不是2?

为什么(int)(14/13-0.001)产生0而不是1?

String to Int 应该抛出而不是返回 0

在运行中,为什么用[] int而不是int []?

为什么QByteArray的大小是int而不是unsigned int

为什么返回Task <int>而不是int?(异步并等待)

为什么默认为“ int”而不是“ byte”?

为什么构造Instance <Integer>而不是int

为什么要使用小数(int [])构造函数?

为什么Java API使用int而不是short或byte?

为什么我们不能只使用[] []而不是int [] []?

为什么从0x0000到0xFFFF的一些int不是定义的Unicode字符

Hibernate 使用 BigDecimal 而不是 Int