day2_c基础

一、gcc编码器

1.1 定义

pc只能识别机器语言,我们所写的c语言是高级语言,机器不能识别,必须经过转化才能使用

所以在linux中,gcc编码器承担了这个功能。

1.2三种打开方式

1.2.1直接型

直接用 gcc 文件名 即可,会在当前目录下生成一个a.out文件,

输入:./a.out 即可得到代码的输出结果。

1.2.2自主命名型

gcc 文件名 -o 自己起的名字,生成一个自己起的名字的文件

输入:./自己起的名字,即可

1.2.3详细过程型

需要四个步骤:预处理-->编译-->汇编-->链接

预处理完成的工作:展开头文件,替换宏定义,删除注释

gcc -E xxx.c -o xxx.i

编译完成的工作:词法分析,语法分析,检查错误

gcc -S xxx.i -o xxx.s

汇编:将汇编文件生成二进制文件

gcc -C xxx.s -o xxx.c

链接:多个目标文件链接 链接库文件 生成对应的可执行文件

gcc xxx.c -o a.out

二、计算机中的数据出炉

2.1数值型数据

2.1.1进制

在我看来,进制类在大学阶段已经了解过了,不需要赘述,只需要把含糊陌生的地方打出来便可

二 八 十 十六

前导符 0b 0 无 0x

输出占位符 无 %#o %d %#x

2.2非数值型数据

2.2.2引言

计算机处理问题时候,不仅会碰见数值型数据,还会碰见非数值型数据,例如:

www.baidu.com”"www.98tang.com" 'M' "4399"等字符或者字符串,天才们为了解决这一个难题,提出了ascii码的概念,所谓ascii码实质上就是用数字去代替字符,实现非数值型数据向数值型数据转化。

ascii其实就是规定了 字符 和 整数对应的关系

每个字符都有一个对应的整数,叫做该字符的ascii码

实际使用字符的时候,本质上使用的都是该字符对应的ascii码

2.2.3常见的ascii码

A ----->65

a------>97

'\n'------>10

'\0'------->0

'0'---->48

2.2.4转义字符

所有的字符均可以用 \+八进制数字 表示

还有部分不能显示在终端上的字符,例如换行,蜂鸣器等,也可以由\ +字母表示

三、词法符号

3.1 关键词

本来就有的,称为关键词,例如:

char short int long float double signed unsigned struct union enum void

const static extern register volatile auto

typedef

sizeof

if else switch case break default do while goto for continue return

3.2标识符

命名原则:

  1. 由数字,字母,下划线组成

  1. 数字不能开头

  1. 不能与关键词冲突

  1. 望文知义

四、数据类型

4.1 C语言的本质

C语言的本质是操作内存。

内存和硬盘区别:

内存:读写速度快 数据掉电丢失 价格贵

硬盘:读写速度慢 数据掉电不丢失 价格便宜

4.2 内存分配的最小单位

字节 Byte。

4.3 数据类型的作用

数据类型的作用相当于模子,决定了由他定义的变量需要操作系统分配多大的内存空间。

4.4 数据类型的分类

基本类型

整型

浮点型

枚举类型

构造类型

数组

结构体

共用体

指针类型

空类型 void

4.5 整数类型

整数类型又可以细分为 char short int long 和 long long 类型

其中每种类型又分为 有符号的(signed) 和 无符号的(unsigned)

不写有无符号时,默认都是有符号的

有符号数 最高位为符号位 符号位为1(负数) 0(正数)

4.5.1 char 字符类型

占用内存空间的大小:1字节 8 bit

能存储的数据范围:

无符号:[0, 2^8-1]

有符号:[-2^7 , 2^7-1]

为了解决正负0的问题,计算机中存储的是数据的补码形式

规定了 10000000 为 -128 的补码

负数比正数多一个 下面的类型与之同理

4.5.2 short 短整型

占用内存空间的大小:2字节 16 bit

能存储的数据范围:

无符号:[0, 2^16-1]

有符号:[-2^15 , 2^15-1]

4.5.3 int 整型

占用内存空间的大小:4字节 32 bit

能存储的数据范围:

无符号:[0, 2^32-1]

有符号:[-2^31 , 2^31-1]

4.5.4 long 长整型

在32位系统中 和 int 一样

在64位系统中 和 long long 一样

4.5.5 long long 长长整型

占用内存空间的大小:8字节 64 bit

能存储的数据范围:

无符号:[0, 2^64-1]

有符号:[-2^63 , 2^63-1]

4.6 浮点型(实型)

就是小数的意思。

float 4字节 单精度浮点型

double 8字节 双进度浮点型

浮点型数据的存储涉及到小数的二进制,比较复杂。

要注意:浮点型存储 存储的是拼凑的近似值

https://blog.csdn.net/weixin_44767670/article/details/118084379?spm=1001.2014.3001.5501

4.7 空类型

void 空类型 一般不单独使用 都是配合着指针使用的

五、原码、反码、补码转换的问题

数据在存储到计算的过程中,涉及到原码、反码、补码转换的问题

原码==给人类看的

反码==用来转换原码和补码的

补码==给计算机看的

无符号数:原码、反码、补码是一样的

有符号的正数:原码、反码、补码是一样的

有符号的负数:

反码 == 原码 符号位不变 其他位按位取反 (0变1 1变0)

补码 == 反码+1

规则:存储时看数据(正负),取出时看类型(有无符号)

六、常量

6.1 概念

在整个程序运行的过程中,值不允许发生变化的量。

6.2 常量的分类

前导符 输出时占位符 例如

整型常量

十进制 无 %d %u 1314

二进制 0b 无 0b10101

八进制 0 %o 0765

十六进制 0x %x 0x67EF

浮点型常量

float 单精度浮点型 %f

double 双精度浮点型 %lf (小写的L) 3.14

指数常量 就是科学计数法 %e 4.567e2 --> 4.567*10^2

字符常量 %c 'M'

字符串常量 %s "hello"

标识常量 ----宏定义 #define

ps:以下是部分常量在输出时的注释

8.5 字符常量

所谓的字符常量就是前面说的 一个 非数值型数据

字符常量必须要用 单引号 '' 引起来,且单引号中只能引一个字符

'M' 'h' '8' '\n'

字符就是整型,整型就是字符

ps:下面是字符常量的注释

//思考

//1. 如何将字符 '8' 转换成 整数 8

char v5 = '8';

//v5 = v5 - 48;

v5 = v5 - '0'; //字符参与运算时 本质就是其对应的ascii参与运算

printf("v5 = %d\n", v5);//8

//2.如何将 大写字母 转换成 小写

char v6 = 'M';

//v6 = v6 + 32;

v6 = v6 + ('a'-'A');//和上面的写法本质是一样的

printf("v6 = %c\n", v6);// m

8.6字符串常量

字符串是由一个或者多个字符组成的,用双引号引出称为字符串,例如:

"www.awaqa.com" "qwerdf" "s"等

一个字符串里面的一个字符占8个bit位,遇到0000 0000自动终止。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值