c语言笔记1

2024.7.22

C语言

编程语言的目的可以理解为帮助人和机器沟通,C语言是计算机编程语言中最有影响力和意义的一种语言, 它的特点和发展对整个计算机行业都产生了深远的影响。

1面向过程的通用程序设计语言

2低级语言特性

3跨平台性

4影响力和发展

5标准化和文档

C语言相关产品:路由器,无人机,智能门锁等。

C语言发展

Unix 和C语言的开发者是同一人,名字叫丹尼斯·里奇

在一般情况下,默认遵循C99标准。

开发环境搭建

局域网共享软件

飞秋 www.feiq18.com

代码编辑器 vscode

插件安装

安装中文汉化插件

安装c++插件

安装code runner插件

安装远程连接终端插件remote development

安装部署cygwin

设置环境变量

测试

软件设置

设置自动保存

设置文件内容格式化

2024.7.23

编译程序

编译是将c语言程序转化成计算机能够识别到的可执行程序(二进制)

C语言 编译型语言,通过编译器编译源代码文件生成机器能够识别的可执行文件(二进制)

命令格式:

编译器名字 源文件文件名字 指定参数 生成的程序文件名字
编译器名字 gcc,arm-linux-gcc,arm-none-linux-gnueabi

源代码文件名字:后缀.c

参数 -o指定即将要生成的程序文件名字,就是当前参数后面的参数

由用户指定的生成的程序文件名字

可以通过构建工具(make),直接选择依赖条件/规则来编译

安装make工具 Sudo apt install make

编译:

make后加上指定前缀的.c源代码文件

gcc 源文件文件名字 -o 生成的程序文件名字

Eg:make hello

执行

格式:程序路径/程序的名字

. 在当前路径下找要执行的程序

/ 路径拼接符合

Eg:./hello

在windows中文件后缀不可以随意更改

问题

如果使用省参数进行编译,则要明确,运行时的程序是(linux:a.out/Window:a.exe),但如果使用指定参数进行编译,则必须要明确的程序名字是-o参数后面程序文件名字.

基本数据类型

C语言被称为是一种面向过程的模块化语言,所谓的模块化,指的是一个个功能明确、各司其职的封装函数,它们就像一块块积木,被合理有机地拼搭起来,形成复杂、健壮的程序。

头文件

  1. C语言程序中,任何符号(包括变量和函数)的使用,都是需要提前声明的。
  2. 如果程序用到了系统库函数,那么就需要包含相应的系统头文件来进行声明。
  3. 上述代码中用到了库函数 printf ,而这个函数的声明在头文件 stdio.h 中,因此在该程序中需要包含此头文件。

声明

  • 概念:对源文件外定义的某个符号进行描述的过程,称为声明
  • 作用:经过声明的符号,编译器才能正确识别和编译,否则编译器不认识,无法判定语法错误
  • 符号:变量、函数等

主函数

  1. 主函数是必须有的,每一个C语言程序有且仅有一个main函数,哪怕是空的。
  2. 主函数的名字是固定的,叫 main ,这个函数名不可被挪作他用。
  3. 主函数是程序的入口,也就是程序开始运行的地方。

主函数分解如下:

// int: 返回值类型,代表主函数最终的执行结果是一个整型数据

// main(void): main是函数名,这个名字不能变

 // void是函数参数列表,可以省略 int main(void) { }

Printf

格式输出控制符

  • 概念:函数 printf被称为格式化IO函数, 因为它是按照指定格式来操作数据的。以常见的整数、浮点数和字符串为例,printf 函数相关的控制格式符如下所示:

// 格式化输出函数

 printf(); // 根据需要输出不同格式的数据

printf("%d\n", 100);

 // 输出1个整数

printf("%d, %d\n", 100, 200);

// 输出2个整数

printf("%f\n", 3.14);

// 输出浮点数

printf("%c\n", 'x');

 // 输出字符

printf("%s\n", "abcd");

// 输出字符串

printf("a=%d, %s\n", "abcd");

 // 输出字符串

语法点:

  • 类似 %d、%f 被称为格式控制符
  • 一个格式控制符对应一个数据
  • ‘\n’ 是一个字符,表示回车符,详细 ASCII 码表参阅教案3。

格式控制符:

    1. 十进制整数:%d
    2. 八进制整数:%o
    3. 十六进制整数:%x
    4. 字符:%c
    5. 字符串:%s
    6. 单精度浮点数:%f
    7. 双精度浮点数:%lf
    8. 长双精度浮点数:%Lf
    9. 地址:%p

return

语言中的关键字 return 的含义是结束一个函数,并返回某个数据(若有)。而具体到 main 函数中时,由于主函数 main 的结束同时也意味着整个程序的结束,因此在上述 Hello World 程序中 return 后整个程序就退出了

一般而言,程序正常退出时,main函数返回值是0;当程序异常退出时,main函数返回值是非0。

数据类型

数据类型其实是固定大小内存的别名。并且描述了一个变量存放什么类型的数据。

内存存储容量单位

字节(byte B):计算 存储容量的一种单位。

比特位(bit):二进制数 0 1

1个字节 = 8位 二进制

1个千字节(KB) = 1024字节

1M = 1024KB

1G = 1024M

1T = 1024G

数据类型分类和计算方法

int (整型) 4

double(双精度浮点型 ) 8

float (单精度浮点型) 4

char (单个字符 'a' 'b') 1

short int (短整型) 2

long (long int)长整型 4(32位编译器) 8(64位编译器)

long long (long long int)(长长整型) 8

bool _Bool (布尔类型 真 ture 假 false ) 1

计算

计算 某个数据类型或者变量 所占的字节数 ----》sizeof( 某个数据类型或者变量名)

总结:

1)数据类型在内存中所占的字节数跟C语言的编译系统有关

2)计算 某个数据类型 所占的字节数可以用sizeof

3) 布尔类型 要添加 #include

整型

Int a=123;

变量 a 有固定的大小,因此也有取值范围,典型的范围是:-2147483648到2147483647(-2^32-1到2^32-1)

符号位

有符号的整型数据,首位为符号位,0表示正数,1表示负数。

无符号的整形数据,没有符号位。

数据类型的值域范围

  • 溢出:

超过数据所能表达的范围,称为溢出,就像汽车里程表,最大值和最小值是相邻的

unsigned char 0 ~ 255

signed char -128 ~+127

正数: +0 +1 ....+127

负数: -0 -1 ......-127

由于 +0 和 -0 重复了, -0 表示 -128

unsigned short 0~65535(2^16-1)

unsigned int 0 ~ 4294967295(2^32-1)

补码原码反码

原码就是一个整数本来的二进制形式。正数与负数的原码区别在于符号位(二进制最高位表示,0:正数,1:负数)

对于正数,它的反码就是其原码(原码和反码相同);负数的反码是将原码中除符号位以外的所有位(数值位)取反,也就是 0 变成 1,1 变成 0。例如short a = 6;,a 的原码和反码都是0000 0000 0000 0110;更改 a 的值a = -18;,此时 a 的反码是1111 1111 1110 1101

正数和负数的补码也不一样,也要区别对待。

 

对于正数,它的补码就是其原码(原码、反码、补码都相同);负数的补码是其反码加 1。例如short a = 6;,a 的原码、反码、补码都是0000 0000 0000 0110;更改 a 的值a = -18;,此时 a 的补码是1111 1111 1110 1110 = 1111 1111 1110 1101(负数反码)+ 1

计算机当中计算时使用补码计算,而且没有减法,最后将补码转化为原码使用

字符类型

char 类型数据

单引号只能存一个字符,即便加入多个字符,但是编译器只会存储第一个

ascii

概念:char数据实际上是在内存存放的是一个小于255的编号(无符号整数)用来表示字符,这个编号叫做ASCII码。

char a = 'A'   比如 'A'----》存储到内存中是65

注意:如果是 sizeof('a') ,那么结果就是4 ,因为在使用sizeof运算的时候,字符数据 就会转换为ascii码的形式,所以不能使用这种方法计算单个字符的大小

转义字符

概念:

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加 '\' 来表示常见的那些不能显示的ASCII字符,如'\0','\t','\n'等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符的意思了。它告诉编译器需要用特殊的方式进行处理。

常见的转义字符:

'\n'   换行

'\t'   横向跳格(Tab) 

'\r'   回车,返回行首

'\\'   反斜杠   '\'

练习

'\41' -->八进制 相当于 '\041' ,打印出来是字符 !

浮点数

概念:用来表达实数(小数)的数据类型

分类:

单精度浮点型(float),在64位系统中典型尺寸是4字节,精确到小数点后6位 %f

双精度浮点型(double),在64位系统中典型尺寸是8字节,精确到小数点后15~16位 %lf

长双精度浮点型(long double),典型尺寸是16字节

占用内存越多,能表达的精度越高

float f1; // 单精度

double f2; // 双精度

long double f3; // 长双精度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值