首页 > 编程知识 正文

cc编程笔记中的数字,cc运算符讲解

时间:2023-05-06 17:32:10 阅读:233909 作者:2453

CC++中各类型数据所占字节数汇总小记【char*、float*等】 一、写在前面的话二、不同位数编译器下的基本数据类型所占的字节数1、16位编译器2、32位编译器3、64位编译器 三、拓展小结
叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!

一、写在前面的话

注意:

1字节=8位1k=1024字节=2^101m=1024k1g=1024m

C标准中并没有具体给出规定那个基本类型应该是多少字节数,而且这个也与机器、OS、编译器有关,比如同样是在32bits的操作系统系,VC++的编译器下int类型为占4个字节;而tuborC下则是2个字节。

所以int,long int,short int的宽度都可能随编译器而异。

但有几条铁定的原则(ANSI/ISO制订的):sizeof(short int)<=sizeof(int)sizeof(int)<=sizeof(long int)short int至少应为16位(2字节)long int至少应为32位。 二、不同位数编译器下的基本数据类型所占的字节数 1、16位编译器

char :1个字节
char*(即指针变量): 2个字节
short int : 2个字节
int: 2个字节
unsigned int : 2个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

2、32位编译器

char :1个字节
char*(即指针变量): 4个字节

(32位的寻址空间是2^32, 即32=8*4个bit,也就是4个字节。同理64位编译器)

short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

3、64位编译器

char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节

验证代码如下:

#include <iostream>using namespace std; int main(){ printf("%dn",sizeof(char)); printf("%dn",sizeof(char *)); printf("%dn",sizeof(short int)); printf("%dn",sizeof(int)); printf("%dn",sizeof(unsigned int)); printf("%dn",sizeof(float)); // printf("%dn",sizeof(float*)); printf("%dn",sizeof(double)); printf("%dn",sizeof(long)); printf("%dn",sizeof(long long)); printf("%dn",sizeof(unsigned long long));}/*char :1个字节char*(即指针变量): 8个字节short int : 2个字节int: 4个字节unsigned int : 4个字节float: 4个字节double: 8个字节long: 8个字节long long: 8个字节unsigned long: 8个字节*/

三、拓展小结

由上在64位编译器中运行结果可以看到,char*与float*型变量所占字节数相等。这是偶然吗?

当然不是。

这是为什么呢?

指针所占的字节数都是机器的位数。

32位的机器占32/8=4字节64位的机器占64/8=8字节

如果再有这种要求用sizeof 运算符计算C++中char*, short*, int*, long*, float*,double*等指针类型所占字节数,不用计算就可以直接得出结果啦!

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

注:
人生在勤,不索何获。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。