基本语法数组声明

时间:2011-11-10 14:59:02

标签: c++

如果我在声明一个新数组时使用int作为数组大小lint抱怨。解决此问题的正确方法是什么:

我可以静态地将int转换为unsigned,但这看起来有点奇怪......

在不改变数组使用和整数大小的情况下解决这个问题的最佳方法是什么?

MapItemPtr* pMapItems = new MapItemPtr[ (unsigned int)iRecordCount ];

可以这样做:

MapItemPtr* pMapItems = new MapItemPtr[static_cast<unsigned int>( iRecordCount )];

这是解决lint错误的正确方法吗? 第3811行错误737:从int到unsigned int的升级符号丢失

还是有更优雅的方式?

2 个答案:

答案 0 :(得分:6)

由于iRecordCount显然是为了保存非负整数,为什么不首先将其声明为unsigned int

答案 1 :(得分:2)

错误不是变量的常量,正如lint所说:

 : Line 3811 Error 737: Loss of sign in promotion from int to unsigned int.

您有几个选择:

1 - static_cast<> intunsigned int
2 - (unsigned int*) c-style强制转换,但在c ++代码中应避免使用 3 - 创建一个临时unsigned int变量,为您创建矢量。

因为您只是创建一个数组,所以变量的类型可以是size_t,在cstddef中声明。