零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C语言 pthread线程
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++面向对象
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++设计模式
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ STL
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++技术杂谈
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++常用函数
一.int short float double 内存占用大小
printf("int :%lu \n",sizeof(int));
printf("short :%lu \n",sizeof(short));
printf("float :%lu \n",sizeof(float));
printf("double :%lu \n",sizeof(double));
/*
int :4
short :2
float :4
double :8
*/
二.int 和 short 区别
1.字节数不同
int:int占用32字节,32比特
short:短整型变量不得低于16位,即两个字节
2.范围不同
int:数据范围为-2147483648~2147483647[-2^31~2^31-1]
short:数据范围为范围-32768~+32767
三.内存优化
如果使用了大量的 float 或者 double ,在对内存占用要求低的情况下,可以统一使用 short 类型,这样内存占用可以缩小 1 倍以上;举个例子:
1.使用 float 完成计算
float x = 10.55;
2.使用 short 完成计算
float x = 10.55;
short y = x * 100;
float z = (float)y / (float)100.0;
也就是说使用 short 需要多一个中间转换过程,数据存放在内存中使用 short ,真正使用的时候再将 short 转为 float,这样内存占用就能减少一半以上;
//使用float
typedef struct PointsList
{
float x;
float y;
float z;
struct PointsList *next;
}PointsList;
//使用 short
typedef struct ShortPointsList
{
short x;
short y;
short z;
struct ShortPointsList *next;
}ShortPointsList;
printf("PointsList :%lu \n",sizeof(PointsList));
printf("ShortPointsList :%lu \n",sizeof(ShortPointsList));
/*
PointsList :24
ShortPointsList :16
*/
重上面代码可以看出一个坐标点结构体能节约8个字节,如果很多点的情况下明显能节约很多内存;
四.猜你喜欢
- C语言 数组下标越界和内存溢出区别
- C语言 使用指针遍历数组
- C语言 指针和数组区别
- C语言 指针数组和数组指针区别
- C语言 野指针
- C语言 函数值传递和址传递
- C语言 函数不定长参数
- C语言 函数指针
- C语言 指针函数
- C语言 回调函数 callback
- C语言 #pragma once
- C语言 #include <> 与 #include “” 区别
- C语言 const 修饰函数参数
- C语言 const 和 define 区别
- C语言 #运算符
- C语言 ##运算符
- C语言 __VA_ARGS__
- C语言 ##__VA_ARGS__
- C语言 函数不定长参数 ##__VA_ARGS__经典案例
- C语言 va_start / va_end / va_arg 自定义 printf 函数
- C语言 main 函数
- C语言 main 函数参数 main(int argc, char *argv[])
- C语言 局部变量
- C语言 全局变量
- C语言 全局变量和局部变量区别
- C语言 static
- C语言 extern
- C/C++ int short float double 优化内存
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容