c语言数据类型

1、进制

1.1、十进制,八进制,二进制,十六进制

十进制:逢10进1,由0~9的数字组成,比如:123,456,789

八进制:逢8进1,由0~7的数字组成,以0开头,比如:0123,0456,07

二进制:逢2进1,由0和1组成,比如:111101,1001101

十六进制:逢16进1,由0~9,a~f,以0x开头,比如:0x12345,0x425

1.2、进制之间的转换

十进制转八进制,二进制,十六进制

最简单:除以进制数,取余,逆序输出即可

二进制转八进制,十六进制

二进制转八进制,每三个位为一位八进制,按照位权相加即可

二进制转十六进制,每四个位为一位十六进制,按照位权相加即可

二进制,八进制,十六进制转十进制

二进制转十进制,二进制的每一位的位权相乘在相加

八进制转十进制,八进制的每一位的位权相乘在相加

十六进制转十进制,十六进制的每一位的位权相乘在相加

2、数据在内存中的存储

1Byte = 8bit

1字节=8比特

1KB = 1024Byte = 2^10Byte

1MB = 2^10KB

1GB = 2^10Mb

1TB = 2^10GB

3、ASCII码

字符在程序里面以ASCII码的方式存在的

#include <stdio.h> int main(int argc, char const *argv[]) { char c = 'a'; printf("c = %d\n", c); return 0; } 输出结果:c = 97

我们需要记住的ASCII码

'a' 97

'A' 65

'0' 48

space 32

4、基本数据类型

4.1、基本类型

数值类型

整型

int

整型

long

长整型

short

短整型

浮点型

float

单精度浮点型

double

双精度浮点型

字符类型

字符型

char

字符型

4.2、构造类型

数组

struct

结构体(组合数据类型)

union

联合体(共用体)

enum

枚举

4.3、指针类型

4.4、void类型(空类型)

数据类型所占字节大小

类型/编译器

16位编译器

32位编译器

64位编译器

void

0

0

0

char

1

1

1

指针

2

4

8

short

2

2

2

int

2

4

4

long

4

4

8

double

8

8

8

float

4

4

4

long long

8

8

8

long double

8

12

16

计算数据的取值范围根据字节转成多少个Bit,去算2的多少次方

记住不一样的三个(记少不记多)

类型/编译器

32位

64位

long

4

8

指针

4

8

long double

12

16

5、类型转换

C语言中所有的基本数据类型都是可以直接相互转换的。(隐式转换/默认转换)

注意:低精度转成高精度是没有任何问题的,高精度转成低精度,可能会发生数据丢失。

高精度:

double

float

int

short

char

低精度:

隐式转换:

int a; float f = 3.1415926; a = f; //这里会隐式转换,但是可能会发生数据丢失 
printf("a = %d\n", a);

强制转换(建议少用):

(类型)变量名 int *d = malloc(sizeof(int)); 
double *p = (double *)d; 
int *d,占用4个字节的空间,
double *p本身需要有8个字节的空间 
p = d;用4字节空间初始化8字节空间,有4个字节没有做初始化的,去使用,非法访问,越界访问

6、变量和常量

6.1、变量

在使用过程中会发生改变的量,叫做变量

变量分为局部变量,全局变量,静态变量,只读变量

局部变量:用一对花括号扩起来的变量

全局变量:定义在函数外面的

静态变量:用一个叫做static的关键字修饰的变量

只读变量:用一个叫做const的关键字修饰的变量

6.2、常量

在使用过程中不会发生改变的量,叫做常量

整型常量:

十进制,八进制,二进制,十六进制

浮点型常量:

3.14 3.1415e+23.1415*10^2

字符型常量:用单引号引起来的

'a'

字符串常量:用双引号引起来的,末尾默认以'\0'作为结束符

"a" ""

注意:有一些字符是不能显示表达的,一般用转义字符,比如:回车 \n 制表符 \t

有些字符连转义字符都表达不了,用\xhh十六进制表示,跟\ddd八进制表示

\0不等于空格

6.3、const关键字

声明只读变量,只能读,不能改,一般在定义的时候需要做初始化

i

nt a = 100; 
const int b = 200; a = 50; 
b = 150;//不能赋值,因为b是只读变量 
int c = a; 
int d = b;
printf("a = %d\n", a); 
printf("b = %d\n", b); 
return 0;

6.4、static关键字

修饰变量或者修饰函数,使它的生命周期发生改变

7、格式化输入输出

scanf用来输入,printf用来输出,它们两个叫做变参函数

#include <stdio.h>//格式化输入输出的头文件

输入:scanf extern int scanf (const char *__restrict __format, ...) __wur; scanf("%d", &n);//通过键盘输入一个整数,%d,格式控制符,通过n的地址,给到n scanf的第一个参数,双引号引起来的格式控制符里面,是怎么样的格式,就要按照什么样的格式来进行输入 如果有字符在做输入的时候,最好就在前面加一个清空输入缓冲区 while(getchar()!='\n'); fflush(stdin);

输出:printf extern int printf (const char *__restrict __format, ...); printf("n = %d\n", n);//通过显示屏将n打印出来 输出数据的时候,也有输出缓冲区,缓冲区是需要刷新才能看到的

1、加上'\n',用来刷新缓冲区

2、整个程序结束的时候

3、缓冲区满的时候

4、fflush(stdout);

5、后面加上scanf

格式控制符

整型 %d

长整型 %ld

短整型 %hd

短短整型(单字节整型) %hhd

无符号整型 %u

长无符号整型 %lu

单精度浮点型 %f

双精度浮点型 %lf

十六进制(大写) %X

十六进制(小写) %x

八进制 %o

字符型 %c

字符串 %s

科学计数法 %e

以十六进制表示地址 %p

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值