C语言基础(一)

语言的发展历史:

1、机器语言:计算机能直接识别的语言(0/1组成的代码)
	缺点:难以编写与检查错误
	优点:机器可以直接识别
2、汇编:由特定助记符来替代二进制指令
		mov、#32...
3、高级语言:用自然语言与机器沟通
	C、C++、JAVA、C#、OC、易语言...

各类语言

计算机的语言:机器语言(计算机只能识别此语言)		
	
编译器:高级语言与机器之间的语言翻译专家。
	gcc/g++是一款很优秀编译器

1、将高级语言(C语言)翻译成为目标程序
	gcc  源文件 -o 可执行文件名
	-o  output生成可执行文件名
	gcc 源文件     		注:默认生成a.out
2、编译过程:(*)  动态库  静态库
	(1)、预编译:替换头文件,宏指令		(检查语法错误,替换头文件,宏指令)
	#include<stdio.h>		//	/usr/include/stdio.h
	gcc -E 源文件  -o  *.i

在这里插入图片描述
在这里插入图片描述 (2)、汇编:将高级翻译成为汇编指令
gcc -S 源文件.i -o .s
在这里插入图片描述
(3)、翻译:将非二机制语言翻译成为机器可以识别的语言(
)
gcc -c 源文件 -o *.o (将此源文件翻译成为二进制)
在这里插入图片描述
(4)、链接:(凡是引用了外部函数,必须将外部函数的库文件链接在一起)
gcc 目标文件 -o 可执行文件
在这里插入图片描述

makefile

makefile是一个文本文件(没有多种类型),该文件中包含自动化的编译规则(windows下编程没有makefie,都是IDE已经为你做了这个工作)

目标:依赖文件
	<tab>command;
目标:
	shell命令
定义变量:
	变量名=字符串
引用变量:
	$(变量名)
	make:执行makefile文件、自动化编译(make命令时,shell会查找本地的makefile文件)
	1、在执行make的命令时,一当发现某个目标的依赖文件修改时间没改变时,不会执行此命令。
	2、make 目标名    执行该目标命令	
运行程序:
	路径/可执行文件名

C语言

C语言是一门强类型(数据类型之分)面向过程的语言
注:是以模块(函数(过程))单位,执行的单位

计算机的基础

存储单位:
	1、最小的存储单位: bit    (存放一个0或者1)
	2、基本存储单位:Byte	字节	(1Byte=8bit)
	3、其他的存储单位:
		1Kb=1024Byte=2^10Byte
		1Mb=1024Kb
		1Gb=1024Mb
		1Tb=1024Gb
原码、反码、补码:
	 原码:(二进制原码):	
		-10       10001010
		-1  -》   10000001		10000000 0000001
	 反码:将原码取反(符号位是不变量)
		-10  -》  11110101		
		-1	 -》  11111110		11111111 1111110
	 补码:在反码基础上+1
		-10	  -》 11110110
		-1	  -》 11111111		11111111 1111111	= -32767(short)

C语言的数据

  1、源文件:存放高级语言的文件
后缀名: .c 

2、程序的入口函数:程序开始的地方(主函数)

 以类型划分:整型,浮点型,字符型
按数据是否可变:常量,变量
1、常量: 不可改变的量
	(1)、整型常量  :
		十进制: 100		[1-9]..[0-9][0-9]  
		八进制: 0100		0[0-7]...[0-7]
		十六进制:0x100     0x[0-9,a,...f]
		八进制转换为十进制:  ...8^1*值+8^0*值
		十六进制转换为十进制:...16^1*值+16^0*值
		
	(2)、字符型常量:
	(3)、浮点型常量:
2、变量:可以改变的量
	1、定义变量:申请空间
		[有无符号] 类型 变量名;
		(1)整型变量:short  int long
			short a
			short存储范围:
				有符号:[-32768,32767]   
				无符号:[0,65535]
			整型的存储方式:(物理方式,存放在存储区的)
				1、正整数是以原码形式存放的(二进制原形)(8位数据)
						10 =00001010
				2、负整数是以补码形式存放
						注:取出应用时,必须转换为原码 -1 
						
		(2)有无符号:
			符号:signed 类型 变量名;
			无符号:unsigned 类型 变量名;
			注:默认定义是有符号的
		(3)字符型:
			常量: 'a'  'b' ';' 		为了与变量名进行区分
			转义字符: '\n'换行   '\t' tab  '\r'抬头	 '\''  '字符  '\\' \	
			注:注意如下字符区别
				  空字符  :  '\0'   --->0
				  空格字符:   ' '	  ---->32
			变量:
				定义变量:
					字符 变量名;
			ASCII:由于计算机只能识别二进制,所以每一个字符都有一个特定的数字对应
				man ascii查看ASCI码
		(4)、浮点型:
			常量:	
				3.14   3e4
			变量:单精度float  双精度double
	2、初始化:在定义变量同时赋初值		
	3、引用内容:通过名字引用变量的内容
		注:1、在同一函数中不能出现同名现象
			2、在引用前,必须先定义。

运算符

为用户提供运算
*运算符表达式:
0、变量达表式:
	 int a=1;
	a;
	表达式结果:整型值(4Byte)   浮点型(double)
1、空间长度: sizeof
	求空间长度表达式 sizeof 空间名    求空间长度表达式结果:类型长度
2、赋值运算符:  左值=右值				结果:右值  注:将左表达式的值赋值给左值(左值必须是变量)
3、算术运算符:+  -  *  / %  
	结果:算术结果
4、判定运算符:  > >=  <=  <  !=  ==   
	结果: 真1   假0
5、逻辑运算符:  与&&  或||  非!
	表达式1 && 表达式2    结果: 一假则假	
	表达式1 || 表达式2    结果: 一真则真
	!表达式				结果:	取反
	注:逻辑 非0为真  0为假
6、自增/自减运算符:++  --
	前自增/减:  ++i  --i	  (i)先自增,(结果)再取(i)值,
	后自增/减:  i++  i--	  (结果)先取(i)值,(i)再自增
	
7、三目运算符:
	表达式1?表达式2:表达式3
	结果:表达式1为真(非0),结果为表达式2,否则为表达式3

8、*   & 

9、()优先级运算符 :
	(1+2)*3
	
10、位运算符:	 
	按位与&  :相同取,否则取0
		 i 10  1010
		 j 8   1000
		&-------------  
			   1000	
			   		
	接位或|   
		 i 10  1010
		 j 8   1000
		|-------------  
			   1010	
	按位取反~    
		i=10	1010
		j=8		1000
		^-------------
				0010
	按位异或 ^  
	右移>>   
	左移<<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值