C语言学习笔记

什么时C语言?

C语言是一种通用的编程语言,由丹尼斯·里奇于1970年代在贝尔实验室开发。它以结构化、效率高、灵活性强著称,广泛用于操作系统开发、嵌入式系统、编译器等领域,也是许多现代编程语言的基础。

第一个C语言程序

#include<stdio.h>  //编译预处理命令
int main()  //程序入口
{
	printf("helloworld"); //输出语句
	return 0;  //程序结束语句
}

简单说一下其中的原理:

编写:HelloWorld.c

编译:把操作系统看不懂的内容翻译为0和1

链接:HelloWorld.c+HelloWorld.obj+stdio.h=HelloWorld.exe

运行:

HelloWorld.c(编写) ⮕⮕HelloWorld.obj+stdio.h(编译)=HelloWorld.exe(链接)⮕运行

C核心语法(注释、关键字、常量、变量)

注释

单行注释 //注释信息

多行注释 /* 注释信息 */

//编译预处理命令
#include<stdio.h> 
//程序入口 
int main()  
{
        //输出文本HelloWorld
	printf("helloworld");
        /*
          程旭的结果
          0为正常停止
          非0为异常停止
	return 0;
}

注释的作用:提高代码的阅读性 (注释不要嵌套)

关键字(被赋予了特定含义的英文单词)

关键字全部小写

常量(在程序的执行过程中,其值不能改变的数据)

1、整型常量 正数、负数、0(例如:18,19)

2、实型常量 小数,带小数点的 (例如:1.93)

3、字符常量 单引号包裹的字母、数字、英文符号 (’A’,’C’)

4、字符串常量 双引号包裹的字符串 (“软件工程王帅”)


实型常量: .93==0.93 18.==18.0

整型常量: 12340000

实型常量: 1.234000E7

1.234000*10^7 不是常量,是一个计算过程


输出常量:printf(参数1,参数2);

参数1(必填):输出内容的最终样式,以字符串的形式体现

参数2(选填):填补的内容

占位符说明
整形%d
实型%f
字符%c
字符串%s

输出常量:

利用占位符的形输出

占位符和填补的数据一 一对应

#include<stdio.h>
int main()
{
	printf("软件工程-王帅\n");
	//输出多个常量
	printf("姓名是:%s,性别是:%s,年龄是:%d", "王帅", "男", 18);
}

变量(用于存储数据值的标识符)(经常发生改变的数据)

变量是存储数据的盒子,不是里边的数据变量的定义格式

使用:

  • 先定义,在赋值
  • 数据类型 变量名=数据值;(定义+赋值)

变量的定义格式:

int(数据类型) a(变量名) ;

  • 数据类型:为盒子中存储的数据,加入类型(限制)整数?小数?…
  • 变量名: 为盒子起的名字
  • ; 语句的结束

变量的使用:

  • 赋值 /修改值
  • a=10;
  • a=20;
  • 使用变量中记录的值
  • int a=10;
  • int b=20;
  • int c=a+b; //计算
  • printf(”%d\n“,c) //打印输出
  • 变量使用:
  • a=10; 赋值/修改值
  • 直接用 获取值

变量的注意事项:

  • 只能存一个值
  • 变量名不允许重复定义
  • 一条语句可以定义多个变量 int b=10,c=20,d=30;
  • 变量在使用之前一定要进行赋值
  • 变量的作用于范围

计算机的存储规则

Text文本

数字 转二进制
字母 查询ASCII码表
汉字 查询GBK码表

Image 图像 像素+RGB

Sound 声音 对声音的波形图进行采样在存储

进制

二进制:由0和1组成,代码中以0b开头
十进制:由0~9组成,前面不加任何前缀
八进制:由0.~7组成,代码以0开头
十六进制:由0~9还有a~f组成,代码中以0x开头

转换

任意进制转换为十进制:

系数*基数的全次幂 相加

系数:就是每一位上的数

基数:当前进制数

权:右→左 012345….

二进制: 1 0 1

系数*基数的权次幂

1 * 2^2 + 0 * 2^1 +1* 2^0 = 4 + 0 +1 = 5(十进制)

八进制: 1 0 1

系数*基数的权次幂

1 * 8^2 + 0 * 8^1 + 0 * 8^0 =64+ 0 + 1 = 65(十进制)

十六进制: a b c

10 * 16^2 + 11 * 16^1 + 12 * 16^0 = 2560 + 176 + 12 = 2748(十进制)

十进制转换为其他进制

除基取余法:

不断除以基数(进制 == 基数),得到余数,直到商为0,再将余数倒着拼接起来即可。

例如:将十进制数 11 转换为二进制数的过程如下:

  1. 确定除数和余数:首先用 2 逐次除以 11,直到商为 0 为止。每次的余数就是二进制位。
  2. 逐步进行除法
    • 第一步:11 ÷ 2 = 5,余数为 1(这将是二进制数的最低位)。
    • 第二步:5 ÷ 2 = 2,余数为 1
    • 第三步:2 ÷ 2 = 1,余数为 0
    • 第四步:1 ÷ 2 = 0,余数为 1(商为 0,结束)。
  3. 将余数按倒序排列:最后的余数按从后往前的顺序排列,也就是:
    • 最后的商是 1,余数是 1011
    • 按顺序排列为:1011

因此,十进制数 11 的二进制表示为 1011

图片[1]-C语言学习笔记-帅~欢迎来到王的国度

数据类型 标识符 键盘录入

数据类型 变量名 = 数据值

int a = 10;

数据类型的作用:

  • 变量中能存储什么类型的数据
  • 存储空间的大小

int a = 56; 00000000 00000000 00000000 00111000


int 通常4个字符 32位(bit)

0 1 bit 比特位

00000000 字节 (最小的存储单元)

1024字节 = 1KB1024TB = 1PB
1024KB = 1MB1024PB = 1EB
1024MB = 1GB1024EB = 1ZB
1024GB = 1TB1024ZB = 1YB

数据类型

整形内存
short2
int4
long4/8
longlong8
C语言中的整数默认为int类型

可以和unsigned组合,定位无符号整数,打印中占位符用%u

小数

float (单精度型) 4 字节

double (双精度型) 8(字节)

C语言的小数默认为double类型

不可以和unsigned组合,unsingned只能跟整数型组合

字符

ohar ASCII码表中的字母,数字,英文符号 1

标识符

用来对符号常量,变量,数组,函数等对象进行命名的字符序列统称为标识符。

  • 有数字,字母,下划线(_)组成
  • 第一个字符必须是字母或是下划线,不能以数字开头
  • 不能是关键字
  • 区分大小写

数据类型(基本类型、空类型、构造类、指针类型、函数类型)


基本类型:

整形(int)、 长整形(long int) 、短整型(short int)

字符型 char 、 1

浮点型 float (单精度浮点型) 、 double(双精度浮点型) 、 long double(长双精度)


空类型 void


构造类型:

数组类型(array)、结构体(struct)、共用体类型(union)、枚举类型(enum)


指针类型 (pointer)


函数类型

键盘录入scanf:获取用户在键盘上输入的数据,并赋值给变量

scanf(“%d”,&变量名);

字符输入输出函数: 字符输出函数putchar、字符输入函数 getchar

格式输入输出函数:格数输入函数scanf、printf(“格式控制字符串”,输出表列);

格式输出函数printf

运算符

算术运算符 + – * / %

自增自减运算符 ++ —

赋值运算符 = += -= *= /= %=

关系运算符 == != > >= < <=

逻辑运算符 ! && ||

三元运算符 a>b ? a:b

算术运算符

  • + 加法
  • – 减法
  • * 乘法
  • / 除法
  • % 取余

计算时,数据不一样不能直接运算,需要转换为一样的,才可以运算

隐式转换

强制转换

隐式转换:把一个取值范围小的转换成取值范围大的

char < short < int < long < longlong < float < double

short a=10; short:0000 0000 0000 1010

int b=a; int:0000 0000 0000 0000 0000 0000 0000 1010

取值范围小的,和取值范围大的计算,小的会自动提升为大的,在进行

short char类型的数据在运算的时候,先提升int,再进行运算

int a = 10;
double b=12.3;
c = a + b; 

double c = a+b;

short a = 10;

short b = 20;

int c = a+b;

强制转换(可能导致数据错误)

如果把取值范围大的,赋值给取值范围小的,就需要进行强制转换;

格式:目标数据类型 变量名=(目标数据类型)被强制转的数据

int b = 10 ; int:0000 0000 0000 1010

short i = (short)b; short: 0000 0000 0000 1010

字符相加

short char 类型的数据在运算的时候,先提升为int 在进行运算

char c=‘a’;

int i = c+1;

char c=97;

printf(”d\n“,c);

printf(“%c\n”,c);

ASCII表 65~90 A~Z 、 97~122 a~z

自增自减运算符

++ 变量中的值+1

— 变量中的值-1

++ 和 — 放在变量的前边或者后边,单独写一行结果一样。

int a = 10;
a++; //11
a--; //12
--a; //10
printf("%d\n",a) //10

先用后加:

#include<stdio.h>
int main()
{
	int a = 10;
	int b = a++;
	printf("%d\n",b);  //b=10
}

先加后用

#include<stdio.h>
int main()
{
	int a = 10;
	int b = ++a;
	printf("%d\n",b); //b=11
}

赋值运算的分类

= 直接赋值 int a = 10; 将10赋值给a

+= 加后赋值 a+ = b; 将 a+b的值赋值给a

-= 减后赋值 a- = b; 将 a – b 的值给a

*= 乘后赋值 a* =b; 将a*b的值给 a

/= 除后赋值 a/ = b; 将a/b的商给 a

%= 取余赋值 a%=b; 将a/b的余数给 a

#include<stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int c = 30;
	int d = 40;
	a += b;
	printf("%d\n",a);
	printf("%d\n",b);
	c *= d;  //c = c*d;
	printf("%d\n",c);
	printf("%d\n",d);
}

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容