什么时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、整型常量
2、实型常量
3、字符常量
4、字符串常量
实型常量:
整型常量:
实型常量:
输出常量: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
转换为二进制数的过程如下:
- 确定除数和余数:首先用
2
逐次除以11
,直到商为0
为止。每次的余数就是二进制位。 - 逐步进行除法:
- 第一步:
11 ÷ 2 = 5
,余数为1
(这将是二进制数的最低位)。 - 第二步:
5 ÷ 2 = 2
,余数为1
。 - 第三步:
2 ÷ 2 = 1
,余数为0
。 - 第四步:
1 ÷ 2 = 0
,余数为1
(商为 0,结束)。
- 第一步:
- 将余数按倒序排列:最后的余数按从后往前的顺序排列,也就是:
- 最后的商是
1
,余数是1
、0
、1
、1
。 - 按顺序排列为:
1011
。
- 最后的商是
因此,十进制数 11
的二进制表示为 1011
。
数据类型 标识符 键盘录入
数据类型 变量名 = 数据值
int a = 10;
数据类型的作用:
- 变量中能存储什么类型的数据
- 存储空间的大小
int a = 56; 00000000 00000000 00000000 00111000
int 通常4个字符 32位(bit)
0 1 bit 比特位
00000000 字节 (最小的存储单元)
1024字节 = 1KB | 1024TB = 1PB |
1024KB = 1MB | 1024PB = 1EB |
1024MB = 1GB | 1024EB = 1ZB |
1024GB = 1TB | 1024ZB = 1YB |
数据类型
整形 | 内存 |
short | 2 |
int | 4 |
long | 4/8 |
longlong | 8 |
可以和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
算术运算符
- + 加法
- – 减法
- * 乘法
- / 除法
- % 取余
计算时,数据不一样不能直接运算,需要转换为一样的,才可以运算
隐式转换
强制转换
隐式转换:把一个取值范围小的转换成取值范围大的
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;
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);
}
暂无评论内容