做文案选图片素材的网站,广州网站建设星珀,棋牌网站开发,建自己网址的免费网页在C中#xff0c;初始化是一个异常复杂的问题#xff0c;很多人认为初始化是赋值的一种#xff0c;事实上#xff0c;初始化和赋值是两个完全不同的操作。
列表初始化
要定义一个名为haif的int变量并初始化为0#xff0c;以下4条语句都可以做到。
int haif 0;
int hai…在C中初始化是一个异常复杂的问题很多人认为初始化是赋值的一种事实上初始化和赋值是两个完全不同的操作。
列表初始化
要定义一个名为haif的int变量并初始化为0以下4条语句都可以做到。
int haif 0;
int haif {0};
int haif{0};
int haif(0);作为C11标准的一部分,用花括号来初始化变量得到了全面应用我们将这种用花括号的初始化方式称为列表初始化
列表初始化特点
如果我们使用列表初始化且初始值存在丢失信息的风险则编译器将报错。
#include iostream
using namespace std;
int main()
{long double ans 3.1415926536;int a{ans},b{ans};return 0;
}而我们如果不使用列表初始化编译器就不会报错而且发生了数据丢失。 不过上面的都无关紧要因为我们不会故意用long double的值去初始化int变量
默认初始化 如果定义变量时没有指定初值则变量被默认初始化此时变量会被赋予“默认值”。
如果是定义于任何函数外的变量(全局变量)则会被初始化为0
定义在函数体内部的变量将不被初始化我们可以看到此时a[2]是一堆乱码。 如果试图拷贝或者以其他形式访问此类值将引发错误。
note: 定义于函数体内的内置类型的对象如果没有初始化则其值未定义。类的对象如果没有显式地初始化则其值由类确定。
小建议 建议初始化每一个内置类型的变量。