用于定义变量的自动类型

塔莎·阿格劳瓦尔(Tushar Agrawal)

我正在尝试使用auto类型来定义变量。

我用两种方法声明了一个数组

1.使用auto

auto a={10,30,20,40};

2.使用int

int b[]={10,30,20,40};

然后,我编写了以下代码:

cout<<sizeof(a)/sizeof(int)<<" "<<sizeof(b)/sizeof(int)
OUTPUT: 2 4

尽管两种陈述的含义相同,但为什么两种情况下的输出却不同。

古普塔

规则是,当使用支撑式初始化程序(例如{10,20,30,40})初始化自动变量(即由auto声明的变量)时,推导的类型为type的实例化std::initializer_list<T>(您的情况将是std::initializer_list<int>)。

此外,请不要忘记sizeof运算符在编译时返回对象的大小(以字节为单位),这对于a而言是恒定的std::initializer_list这意味着,如果您的实现std::initializer_list使用第一个和最后一个元素使用两个指针,则对其调用sizeof()将返回两个指针的大小(在您的情况下为8)。

为了拥有合适的尺寸,您应该使用的size()方法std::initializer_list

   auto a = { 10,20,30,40,50,60,70,80 };
   int b[] = { 10,30,20,40,50,60,70,80 };

   std::cout << a.size() << " " << sizeof(b) / sizeof(int) << std::endl;

输出为:

8 8

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C++ 在知道其类型之前使用自动定义的变量

在Python中的何处放置静态变量(用于类型定义)

为什么自动返回类型推导适用于未完全定义的类型?

定义变量的类型!蟒蛇

Flutter:自动填充文本字段不适用于自定义数据类型

如何使自定义 ModelBinder 自动应用于某种类型的所有属性

自动如何确定变量的类型?

自动类型的MPI广播变量

在“等待”线程中定义的结构完成类型自动变量上调用complete()

类型提示用于正在定义的类型的对象

vscode会在自定义摘要中执行自动竞争变量。自动竞争不适用于自定义代码段

如何定义导入变量类型

将内置类型变量传递给仅具有一个类类型参数的“ +”运算符时,用于自动类型转换的构造函数

用于自动更改列类型的 PLSQL 过程

定义与变量a相同类型的变量b

php定义变量类型与不定义

R:自动识别变量的“类型”

Eclipse CDT打开自动类型变量的声明

C ++自动用于类型和非类型模板

将Pmtk库用于HMM时,输入类型为'double'的未定义函数或变量'logsumexp'是什么?

DAX公式错误-产生变量数据类型的表达式不能用于定义计算列

DAX错误:产生变量数据类型的表达式不能用于定义计算列

TypeScript:用于“动态值”分配的变量类型?

适用于用户定义的类型

用于promise.reject的TypeScript类型定义

定义用于闭包的通用类型

用于自定义值类型的DataContractSerializer

更改用于定义顶点的变量

fmap应用于类型变量以外的类型