c++中说明了在使用下标访问元素时,正确的类型是vector使用vector::size_type类型,数组下标使用size_t类型

问题1:为什么在数组下标定义时,我使用int也是对的?和编译器有关吗?用的是vs2010问题2:是否在别的语言中(如果有的话)也是如此?!望高人指点…………intmain... 问题1:为什么在数组下标定义时,我使用int也是对的?和编译器有关吗?用的是vs2010
问题2:是否在别的语言中(如果有的话)也是如此?!
望高人指点……
……
int main()
{
const size_t array_size = 3;
/*const int array_size = 3;和上句的比较?!为什么size_t是和机器无关的?它不是相当于unsigned int类型吗*/
int array[array_size] = {0, 1, 2};
……
}
展开
 我来答
King920406
2012-02-06 · TA获得超过594个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:85万
展开全部
vector是标准库定义的,size_t是在标准C库中定义的。
他的返回值是unsigned int型。在32位机器中,size_t占用4字节的内存空间,与多数的int型一样(少数的占2个字节)。而在64位机器中,size_t就占用8个字节的内存空间,int型与long型还是占4个字节的内存空间。所以LZ用const int来定义数组的大小是没错的,前提是要在32位机器下。反之,在64位的机器下就有问题。用size_t也就是让代码的移植性增强.
个人意见,高手勿喷
追问
嗯,有点意思了。
heresy_me
2012-02-03 · TA获得超过1719个赞
知道小有建树答主
回答量:1708
采纳率:42%
帮助的人:306万
展开全部
http://zhidao.baidu.com/question/363989292.html?oldq=1
这就是有符号与无符号区别,int和unsigned int也是这样的行为。幸运的是你现在写的数字能够被有符号类型的保存下来,在数字是自然数的情况两个类型——unsigned int和int几乎一样,然而,我希望你能够使用size_t或者std::string::size_type,因为,我发现这种类型之间的转换为使编译速度慢得十分明显;同一种类型,不同层次之间的寻找在编译时间的花费上几乎为0,而不同一种类型,即使在同一层次之间的转换,在编译时间的花费上却也十分明显。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rylanli
2012-02-03
知道答主
回答量:41
采纳率:0%
帮助的人:3.9万
展开全部
看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式