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 |

浙公网安备 33010602011771号