十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
清屏:ctrl+l
创新互联是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站设计、品牌网站设计、成都全网营销。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。网站制作、成都网站设计、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。在终端输入clear
补全键:tab键
上下箭头:查找输入的历史命令
打开一个和当前路径相同的终端:ctrl+shift+n
1.ls显示当前目录
ls -a:显示当前路径下的所有文件(包括隐藏文件))
以.开头的文件:隐藏文件
.代表当前目录
..代表上一级目录
Ls -l:显示当前路径下的文件的详细信息(属性)
选项可以配合去用
2.pwd:显示当前所在的绝对路径(以根目录开始的路径)
3.Cd 路径:切换路径
Cd : 直接跳转至家目录
Cd ..:跳转至上一级目录
Cd -:跳转至上一次操作的时候的路径
4.touch 文件/文件路径 一次可以创建多个
5.Mkdir 文件夹名/文件夹路径 一次可以创建多个
6.rm 文件/文件路径 一次可以删除多个
7.rm -r 删除文件/文件夹(-r 递归)
-i 每次删除之前会提示
Rm -ri
8.rmdir 删除空文件夹
增删改查
9.Cp 源(文件/-r文件夹) 目标文件 复制
10.移动:Mv 源文件 目标文件
改名字:mv 原文件名 修改的文件名
二、vim编辑器如果文件存在,直接打开进行编辑
如果文件不存在,创建文件并且打开编辑
三种模式:
命令行模式到插入模式:i
插入模式退出到命令行模式:esc
命令行模式到底行模式;shift+ :
底行模式退出到命令行模式:esc
底行模式:
w:保存
q:退出
q!:强制退出
wq:保存并退出
Wq!:保存并强制退出
Set nu:设置行号
Set nonu:取消行号
命令行模式:
yy:复制
p:粘贴(从光标的下一行去粘贴)
nyy:复制n行
dd:删除(剪切)
Ndd:删除n行(剪切n行)
u:撤回
Ctrl+r:反撤销
Vim hello.c
gcc hello.c :生成一个名为a.out的可执行文件
如果直接这样去编译多个文件,gcc直接去编译:会覆盖之前生成的a.out
要给生成的可执行文件起名字:(-o参数)
gcc hello.c -o hello(自己起的名字)
怎样去执行可执行文件:./可执行文件名
三、程序的设计步骤Vim(编辑)->gcc(编译)->./a.out(执行、调试)
四、计算机的数据表示 4.1非数值数据:字符 图片 声音 视频
‘a’ ‘z’
字符串
“shang”
字符在计算中是以ascii码去存储的 一个字节占8个bit
‘A’用65表示 ‘a’用97表示
大写转小写只需要+32即可
printf(“格式控制串”,输出表);
格式控制串:原样输出的内容+格式化符
输出表:要输出的内容
%d表示以整型输出
%f以浮点型进行输出
%c以字符型进行输出
示例:
Int a = 65;
printf(“a= %d\n”,a);
a = 65
4.2数值数据4.2.1数值数据
十进制(逢十进一)(0-9)
0 1 2 3 4 5 6 7 8 9 9+1= 10
二进制(逢二进一)(0-1)
0 0+1=1 1+1= 10
八进制(逢八进一)(0-7)
7 + 1 = 10
十六进制(逢十六进一)(0-9 a(A)-f(F)(15))
F+1 = 10
为了区分十进制、八进制、十六进制
一般在八进制之前加上0
在十六进制之前加0x (a-f) 0X (A-F)
67(十进制) 067(八进制) 0x67(十六进制)
4.2.2进制转换
将其他进制转换为十进制:
1、二进制转换为十进制: 1101:1*2^0 + 0*2^1 + 1*2^2+ 1*2^3= 13
2、八进制转换为十进制: 076: 6*8^0 + 7*8^1 = 62
3、十六进制转换为十进制:0xfa: a*16^0 + f*16^1 = 250
将十进制转换为其他进制:
二进制和八进制关系:
0-7去表示:3位二进制数
000---------0 111-------7
二进制--------------------八进制
000----------------------------0
001----------------------------1
010----------------------------2
011----------------------------3
100---------------------------4
101---------------------------5
110---------------------------6
111---------------------------7
二进制转换为八进制:111 101 101---->0755
八进制转换为二进制: 07245:---->111 010 100 101
二进制和十六进制关系:
0-f(15)去表示:4位二进制数
0000--------0 1111----f(15)
二进制数-----------十六进制
0000---------------------0
0001---------------------1
0010--------------------2
0011--------------------3
0100--------------------4
0101--------------------5
0110--------------------6
0111--------------------7
1000-------------------8
1001-------------------9
1010-------------------a
1011-------------------b
1100-------------------c
1101-------------------d
1110-------------------e
1111-------------------f
二进制转换为十六进制:0001 1110 1101 ---->0x1ed
十六进制转换为二进制: 0xfca4:---->1111 1100 1010 0100
4.3 基本数据类型 4.3.1关键字 32个系统预先定义好的,有特定的含义,并且都是小写 ( int a int int //error)
数据类型: int short float char long double struct void union(共用体) enum
控制语句:if else switch case break default continue do while goto for
存储类型: extern static auto register
const:只读
Return:返回函数
Signed:有符号数
Unsigned:无符号数
Sizeof:计算所占的字节数 (sizeof(数据类型)/sizeof(变量名))
Typedef:去给已有的类型去起别名 typedef int a;
Volatile:防止编译器优化的
如何去定义一个变量:
存储类型 数据类型 变量名;
4.3.2 标识符程序员自己去定义的,一般用来定义变量名,函数名
int short float char long double:
32OS:
字符型:Char(1字节)
整型:int (4字节) long(4字节) short(2字节)
浮点型:float(4字节) double(8字节)
64OS:
字符型:Char(1字节)
整型:int (4字节) long(8字节) short(2字节)
浮点型:float(4字节) double(8字节)
4.4有符号数和无符号数正数和负数
正数的原码、反码、补码都是一样的
最高位是符号位,1表示负数,0表示正数
计算机都是以补码的形式存储的
以一个字节为例子
10: 0000 1010
-10:: 1000 1010
以两个字节去表示:
10 : 0000 0000 0000 1010
-10: 1000 0000 0000 1010
负数:
原码:最高位是符号位,1表示负,0表示正
反码:符号位不变,其他位取反:(1->0 , 0->1)
补码: 反码+1
-10:原码: 1000 1010
反码: 1111 0101 (符号位不变,其他位取反)
补码: 1111 0110 (反码加1)
计算机是以补码形式存储:
负数:求补码的原码
补码: 1111 0110, (-10)原码是多少:(减1,,符号位不变,其他位取反)
-1: 1111 0101
取反(符号位不变) 1000 1010 (-10)
补码: 1111 0110
取反(符号位不变) 1000 1001
加1: 1000 1010 (-10)
示例: -34的补码:原码:1010 0010
反码:1101 1101
补码: 1101 1110
计算机中:
-10 1111 0110
+ 10 0000 1010
补码:10000 0000
取反:1 1111 1111
原码: 0000 0000
Short:2个字节:
-10 : 1111 1111 1111 0110
10: 0000 0000 0000 1010
补码; 1 0000 0000 0000 0000
取反:1 1111 1111 1111 1111
原码: 0000 0000 0000 0000
Unsigned Char a = 257
printf(“%d\n”,a); 1
258转换为二进制:1 0000 0010
Char只有八bit: 0000 0010 ----》2
2.无符号数(unsigned)
只有正数:正数的原码,反码,补码都是一样的
4.5家族 4.5.1字符型家族Char(1字节) 8bit
值域
Unsigned:正数(0-255)
补码:0000 0000 --------》1111 1111
Signed:有正数也有负数 (-128->127)
补码:1000 0000--------》 0111 1111
-128 ------>127
-128的原码: 1 1000 0000
Unsigned char b = 260; 4
Signed char a = 130; -126
整型家族:Int
值域
Unsigned:
补码:
0000 0000 0000 0000 0000 0000 0000 0000---->1111 1111 1111 1111 1111 1111 1111 1111
Signed:
补码
1000 0000 0000 0000 0000 0000 0000 0000---->0111 1111 1111 1111 1111 1111 1111 1111
浮点型家族:Float:单精度浮点数,有效位:6-7位
Double:双精度浮点数,有效位数:15-16位
五.常量从程序开始到程序结束都不会发生改变的量
1. 字符常量
‘a’ ‘b’ ‘c’
2. 整型常量
二进制:0110
八进制:076
十进制:23
十六进制:0xff
注意:默认情况下,整型常量是有符号的(如果是无符号会添加后缀)
无符号的整型:86U
长整型:86L
无符号的长整型 86UL
3. 浮点型常量
0.0001 1000(浮点型常量包含整型常量)
1e-4 1e+3
4.字符串常量
“hello”
5.宏
#define 宏名 表达式
注意:(1)宏名大写、小写都可以,但是一般情况下用大写,为了和变量区分
(2)后面没有分号
六、变量 6.1 定义只要定义就会开辟内存空间
c语言内存分区:
6.2如何定义变量存储类型 数据类型 变量名;
存储类型:决定了开辟的内存空间在内存中的哪个分区
auto 、static、extern、register
数据类型:决定了开辟的内存空间的大小
变量名:开辟的内存空间的名字
//定义一个整型变量
int a;//auto int a;
6.3局部变量定义在函数体(任何函数体)内部的变量
6.4全局变量定义在函数体外部的变量
6.5存储类型auto、extern、static、register
auto:修饰局部变量,存储在栈区
extern:修饰全局变量,存储在静态区
static:既可以修饰局部变量,又可以修饰的全局变量,存储在静态区
register:修饰局部变量,存储在寄存器中
总结:
int a = 10;//初始化
int a;
a = 10;//赋值
总结:
auto:修饰的变量存储在栈区,只能修饰局部变量
register:修饰的变量存储在寄存器中,只能修饰局部变量(修饰的变量不一定存储在寄存器中,如果寄存器有空闲的,存储在寄存器中,否则存储在栈区)
extern:修饰的变量存储在静态区,只能修饰全局变量
注意:程序可以由多个.c文件组成,但是main函数(程序的入口函数)只能有一个
Static:既可以修饰局部变量,又可以修饰全局变量,修饰的变量存储在静态区
修饰局部变量的时候:1、延长局部变量的生命周期,局部变量不初始化,其值为0,若局部变量进行初始化,只能初始化一次
Static也可以修饰全局变量:限制作用域,只能在本文件内使用
静态局部变量有以下特点:
该变量在全局数据区分配内存;
静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;
它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束
使用它的范围
生命周期:从定义开始,到模块结束({})结束
作用域:大括号内
2、Static修饰的局部变量:
生命周期:从定义开始,到程序结束
作用域:大括号内
3、全局变量:
生命周期:从定义开始,到程序结束
作用域:整个程序
4.Static修饰的全局变量:
生命周期:从定义开始,到程序结束
作用域:本文件内
七、运算符优先级
单算移关与,异或逻条赋
单目运算符、算术运算符、左移,右移、关系运算符、与运算符、异或、或运算符、逻辑运算符、条件运算符、赋值
7.1算术运算符+,- ,*,/,%(取余),++,--
%不能用于浮点数
++在前:先自加,在赋值
++在后:先赋值,在自加
注意:如果a++,++a单独成为一条语句,都相当于a = a+1
7.2关系运算符>< >= <= == !=
注意:1< a< 5 //error
等号的书写:将常量放在等号的左边
7.3逻辑运算符&& || !
表达式1&&表达式2
&&截断法则:有一个为假,结果就为假,前一个为假,后面就不再进行运算了
||运算符
表达式1 || 表达式2
||截断法则:有一个为真,结果就为真,前一个为真,后面就不再进行运算了
7.4sizeof运算符Sizeof(数据类型) sizeof(变量名)
7.5三目运算符表达式1?表达式2:表达式3
判断表达式1的值是否成立,如果成立就将表达式2的值作为整个表达式的值,如果不成立,就将表达式3的值作为整个表达式的值
7.6 逗号运算符表达式1,表达式2,.................表达式n
从左向右依次计算每个表达式的值,最后将表达式n的值作为整个表达式的值
7.7位运算符& | ~ ^ << >>
八、输入输出与三大结构函数:有独立功能的一个模块
标准输入输出函数:printf scanf(对变量的类型没有要求)
输入:从键盘拷贝数据到内存中
输出:从内存中拷贝数据到显示屏上
顺序结构、选择结构、循环结构
8.1 顺序结构语句按照一定的先后顺序去执行
8.2选择结构8.2.1单分支if选择结构
If(表达式)
{
语句;
}
先去判断表达式是否成立,如果成立,则执行语句;
8.2.2双分支if语句结构
if(表达式)
{
语句1;
}
else
{
语句2;
}
先判断表达式是否成立,如果成立,执行语句1,否则,执行语句2;
8.2.3多分支if语句结构
If(表达式1)
{
语句1;
}
Else if(表达式2)
{
语句2;
}
。。。
Else
{
语句n;
}
从上往下,依次判断每个表达式的值,如果表达式的值为真,就执行对应的语句
8.2.4 switch语句
Switch(表达式)
{
Case 标号1:
语句1;
Case 标号2:
语句2;
Case 标号3:
语句3;
。。。
Case 标号n:
语句n;
default:
语句n+1;
}
注意:(注意编程规范,不然很丑)
1、表达式不能为float类型
2、标号要为一个常量
3、表达式等于标号的时候(如果没有标号等于表达式,去找default),一直去执行冒号后面的语句,直到switch case语句结束,或者遇到break跳出。
结束条件:1、switch。Case语句结束
2、遇到break,跳出
8.3循环结构什么是循环?
三要素:循环的起始条件,循环的终止条件、循环变量的变化
8.3.1 for循环
For(表达式1; 表达式2;表达式3)
{
循环体;
}
表达式1:循环的起始条件
表达式2:循环的终止条件
表达式3:循环变量的变化
首先执行表达式1,然后去判断表达式2是否成立,如果成立,执行循环体,然后去执行表达式3,如此反复,直到表达式2不成立,跳出循环
8.3.2while语句
While(表达式)
{
循环体;
}
先判断表达式是否成立,成立的话,执行循环体,否则,跳出循环
do while语句
do
{
循环体;
}while(表达式);
先执行循环体,然后和while一样。
总结:while和do while的区别
while:先判断,在执行,语句至少执行0次
do while:先执行,在判断,语句至少执行1次
Break和continue的区别
break:1、跳出循环 2、跳出switch语句
Continue:跳出本次循环,执行下一次循环
8.3.3 goto语句
无条件跳转语句;
goto 标号;
标号:
标号的命名规则:和标识符的命名规则相同。(好的名字:见名知意)
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧