码迷,mamicode.com
首页 > 编程语言 > 详细

c语言之sizeof的细节

时间:2018-09-27 01:46:52      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:符号   数组   一段   turn   ace   mes   总结   style   个数   

关于sizeof,我们知道sizeof并不是一个函数,尽管通常我们会用sizeof()用法(这是c语言的坑),在此关于sizeof的一些关键不被认知的进行一下总结:

 1 # include "iostream"
 2 int array[]{23, 34, 12, 17, 204, 99, 16};
 3 #define TOTAL_ele (sizeof(array)/sizeof(array[0]))
 4 int main()
 5 {
 6     using namespace std;
 7     int d = -1;
 8     cout << " the return value of array is:" << sizeof(array) << endl;
 9     cout << "the return value of array[0] is:" << sizeof(array[0]) << endl;
10     if (d < TOTAL_ele - 2)
11         cout << "无fuck说" << endl;
12     system("pause");
13     return 0;
14 
15 }

上面一段c++代码,注意几点:

sizeof(数组名),返回的是:元素个数×类型字节数(比如这里是28),尽管我们知道数组名表示一个地址。

sizeof()的返回值,准确的说叫做测量值,是个无符号数,即unsigned 类型,因此上述 if(d<TOTAL_ele-2)并不为逻辑真,因为左右类型不匹配,实际上,会将左侧的int型的d= -1转化成一个4个字节的无符号数-1。

因此在此强调一个概念:C语言写程序的时候一定要注意类型的匹配

c语言之sizeof的细节

标签:符号   数组   一段   turn   ace   mes   总结   style   个数   

原文地址:https://www.cnblogs.com/shaonianpi/p/9710735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!