C语言概述
C语言是一种用途广泛、功能强大、使用灵活的过程性(procedural)编程语言,既可用于编写应用软件,又能用于编写系统软件
第一个C程序
#include <stdio.h>
int main(int a, int b)
{
printf("demo为%d,%d",1,2);
return 0;
}
| 代码 | 功能 | 其他 |
|---|
#include <stdio.h> | 包含头文件,stdio.h是标准的输入输出头文件,包含printf、scanf等函数的声明 | |
int main(int a, int b) | 函数首部(函数的第一行),包括返回值类型、函数名、参数(c语音参数也要定义类型) | main为主函数,有且只能有一个,c语言程序,从main函数开始执行,到main函数结束 |
{ } | 花括号括起来的内容为函数体 | |
printf("demo为%d,%d",1,2); | printf双引号内为格式控制会打印出来,用转义符%d可以输出表列对应的值,但是顺序要一一对应。后面逗号隔开的为输出表列可以用逗号隔开写多个 | |
return 0; | 将数据返回并结束函数。每一行代码都要以;英文分号结束 | |
基本数据类型
常量:不能改变的量,有六种
| 变量 | 类=类型 | 其他 |
|---|
1、a、-100、234L | 整型常量 | 234L为长整型常量 |
1.23、-7.89 | 实型(浮点型)常量 | |
i、z、-、转译字符 | 字符常量 | 常见的转译字符:\n换行、\斜杠、\d输出整型、\b回删(Backspace)、\t制表符(Tab)、\010 八进制的10 |
ab、hello | 字符串常量 | |
const int a、int const a | const修饰符常量 | 使用const关键字定义的值,不可修改,修改编译器会报错 |
#define N 10 | 符号常量 | 通过预定义指令创建的,为程序中某个值或者字符串提供一个容易理解且便于管理的名称,在预处理时,会被实际值所替换 |
变量:可以改变的量,基本数据类型的变量有七种
| 代码 | 类型 | 字节 | printf占位符 |
|---|
int | 整型 | 4 | %d |
chart int | 短整型 | 2 | %hd |
long int | 长整型 | 4 | %l |
long long | 长长整型 | 8 | %ll |
char | 字符型 | 1 | %c |
float | 单精度浮点型 | 4 | %f |
double | 双精度浮点型 | 8 | %lf |
符号
| 代码 | 名称 | 功能 | 例子 | 其他 |
|---|
signed | 有符号 | 可以表示正数、负数、零 | signed int a 等价于 int a | 一半情况下缺省(可以省略不写) |
unsigned | 无符号 | 可以表示正数、零,正数可使用范围更大 | unsigned int a | 用的多些 |
signed char a;
unsigned char a;
C语言概述
C语言特性
- 灵活性,既可以编写应用软件,又可以编写系统软件
- 运算符丰富
- 数据类型丰富
- 具有结构化的控制语句
- 语法限制不太严格,程序设计自由度大
- 有指针,可以直接访问物理地址,能进行位操作
- c语言程序移植性好
一个源文件的组成部分
#include <stdio.h>
int main(int i,int j){
printf("%d,%d",i,j);
return 0;
}
| 代码 | 描述 | 其他 |
|---|
#include <stdio.h> | 包含头文件,标准输入输出头文件 | 放置printf、scanf等函数 |
int main(int i,int j) | 函数首部(函数第一行) | int是函数返回值类型定义,main是函数名, i和j是函数的参数,c语言中函数参数需要定义类型 |
main | main是主函数,有且只有一个 | c语言程序从main函数开始,到main结束 |
{ } | 中括号里面是函数体 | c语言每行语句都要用英文分号;结尾 |
return 0; | 函数返回值,表示函数结束,返回的内容要和函数类型定义对应上 | 如果类型是void,可以省略return |
C语言组成部分
- 基本语法,包括关键字、标识符、运算符、分隔符
- 数据类型,包括基本数据类型、构造数据类型、枚举类型、指针类型
- 控制结构,包括顺序结构、选择结构、循环结构
- 函数,是c语言最基本的模块,用于执行特定任务
- 预处理指令,以#开头,像#include、#define
- 输入输出,如printf()、scanf(),用于在程序和用户之间进行数据交互
基本数据类型
有无符号
常量(六种)
| 代码 | 描述 | 其他 |
|---|
a、b、c、-、转义字符 | 字符常量 | 转义字符:%%百分号、\n换行、\b回删、\t制表符(Tab)、\010八进制的10、 \斜杆 |
abc、dd、hello | 字符串常量 | |
100、30、 -10 、234L(长整型常量) | 整型常量 | |
10.23、科学计数法 | 实型(浮点型)常量 | 科学计数法:12E5(1.2*10的5次方,e大小写都可以,e前后需要都为数字) |
#define N 10 | 符号(预定义)常量 | |
const int 10; int const 10; | const修饰常量 | 尝试修改编译器会报错 |
有符号无符号
| 代码 | 描述 | 其他 |
|---|
signed | 有符号 | 可以表示0和正数,取值范围大 |
unsigned | 无符号 | 可以表示0、正数和负数,取值范围相对较小 |
变量(七种)
变量名的命名规则:符合标识符的命名规则(由数字、字母、下划线组成,不能以数字开头),不能与关键字重名
| 代码 | 描述 | 字节数 | 占位符 | 有符号取值范围 | 无符号取值范围 |
|---|
char | 字符型 | 1 | %c | -2^7~2^7-1 | 0~2^8-1 |
float | 单精度浮点型 | 4 | %f | | |
double | 双精度浮点型 | 8 | %lf | | |
int | 整型 | 4 | %d | -2^31~2^31-1 | 0~2^32-1 |
short int | 短整型 | 2 | %hd | -2^15~2^15-1 | 0~2^16-1 |
long int | 长整型 | 4 | %ld | -2^31~2^31-1 | 0~2^32-1 |
long long | 长长整型 | 8 | %l | -2^63~2^63-1 | 0~2^64-1 |
格式化输入输出函数
void main(){
print("请输入三个数,以空格隔开!\n");
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%d",a,b,c);
char a = getchar();
putchar(a);
putchar('i')
float d = 10/(float)(3);
print("%1.2f",d);
}
格式占位符
| 符号 | 描述 | 其他 |
|---|
%d | 十进制有符号 | |
%u | 十进制无符号 | |
%x | 十六进制 | |
%o | 八进制 | |
类型转换
| 代码 | 描述 | 其他 |
|---|
float a = 10/(float)(3) // 结果是3.33333 | 强制类型转换 | |
float a = 10/3.0 | 隐式类型转换 | |
运算符
算数运算符
+加、-减、*乘、/除、%取模(余)
赋值运算符
=直接赋值、+=先加再赋值 、/=先除再赋值、%=先取余再赋值
关系运算符
>大于、<小于、==等于、>=大于等于、<=小于等于
逻辑运算符
&&与、||或、!非
运算符优先级
!>算术运算符>关系运算符>&&>||>赋值运算符
sizeof 运算符
计算数据类型/变量所占用空间大小
三目运算符
void main(){
int a,b,c;
int max = a>b
?
a>c?a:c
:
b>c?b?c;
}
三大结构,顺序、选择、循环
选择结构
void main(){
int a,b,c,max;
if(a>b){
if(a>c){
max = a;
}else{
max = c;
}
}else if(a<b){
if(b>c){
max = b;
}else{
max = c;
}
}else{
pritf("a等于b");
if(a>c){
max = a;
}else{
max = c;
}
}
}