C
类的存储大小
https://www.cnblogs.com/georgeOfChina/p/7661698.html
存储类
auto
register
static
extern
存储数据类形
1g=1024m 1m=1023kb 1kb=1024byte
byte(字节)
bit(位)
数类型
下表列出了关于标准整数类型的存储大小和值范围的细节:
-
•
16位操作系统:long:4byte,int:2byte
-
•
32位操作系统:long:4byte,int:4byte
-
•
64位操作系统:long:8byte,int:4byte int型在不同位数操作系统中所占用的字节数不同,如果想编写可移植性好的程序,早年流行16位和32位操作系统时最好用long修饰int型,现在流行32位和64位操作系统,用int就挺多了。当然这些都看你怎么去理解它了,毕竟它 们在不同操作系统所占字节数不固定,所以各自都有其适用之处,不可定论其好坏。
C语言规定:无论什么平台都要保证long型占用字节数不小于int型, int型不小于short型。
类型 | 存储大小 | 值范围 | 精度 |
---|---|---|---|
int | 4byte=32bit | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 | |
long int | 4byte=32bit | ||
unsigned int | 4byte=32bit | 0 到 65,535 或 0 到 4,294,967,295 | |
long | 4byte=32bit | -2,147,483,648 到 2,147,483,647 | |
long long | 8byte=64bit | -9223372036854775808~9223372036854775807 | |
unsigned long | 8byte=64bit | 0 到 4,294,967,295 | |
char | 1byte=8bit | -128 到 127 或 0 到 255 | |
unsigned char | 1byte=8bit | 0 到 255 | |
signed char | 1byte=8bit | -128 到 127 | |
short | 2byte=16bit | -32,768 到 32,767 | |
unsigned short | 2byte=16bit | 0 到 65,535 | |
float | 4byte=32bit | 1.2e-38到3.4e+38 | 6位有效位 |
long float | 8byte=64bit | ||
double | 8byte=64bit | 2.3e-308到1.7e+308 | 15位有效位 |
long double | 8byte=64bit | 3.4e-4932到1.1e+4932 | 19位有效位 |
bool | 1byte=8bit |
指针大小
-
•
32位操作系统:4byte=32bit
-
•
64位操作系统:8byte=64bit 指针就是地址,地址就是指针。 而地址是内存单元的编号。所以,一个指针占几个字节,等于是一个地址的内存单元编号有多长。 在计算机中,CPU不能直接与硬盘进行数据交换,CPU只能直接跟内存进行数据交换。而CPU是通过地址总线、数据总线、控制总线三条线与内存进行数据传输与操作。
结构体大小
位运算
位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示: |
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
赋值运
下表列出了 C 语言支持的赋值运算符:
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 | C = A + B 将把 A + B 的值赋给 C |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 | C += A 相当于 C = C + A |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 | C -= A 相当于 C = C - A |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 | C *= A 相当于 C = C * A |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 | C /= A 相当于 C = C / A |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 | C %= A 相当于 C = C % A |
<<= | 左移且赋值运算符 | C <<= 2 等同于 C = C << 2 |
>>= | 右移且赋值运算符 | C >>= 2 等同于 C = C >> 2 |
&= | 按位与且赋值运算符 | C &= 2 等同于 C = C & 2 |
^= | 按位异或且赋值运算符 | C = 2 等同于 C = C 2 |
|= | 按位或且赋值运算符 | C |= 2 等同于 C = C | 2 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具