My learn in day2

【gcc编译】将代码转换成机器能识别的机器语言(一般是二进制)
四步编译过程
[1]预处理:展开头文件、删除无用注释、替换宏定义等
命令1:gcc -E  hello.c -o hello.i 
[2]编译:检查语法错误,有错报错,无错误转成汇编语言,生成汇编文件
命令2:gcc -S hello.i -o hello.s
[3]汇编:将汇编文件转换成二进制文件
命令3:gcc -c helllo.s -o hello.o
[4]链接:链接库文件,最终生成为机器能识别的可执行的文件
命令4:gcc hello.o -o hello

【词法符号】程序设计语言中由若干个字符组成的有意义的最小的语法单位
分类:关键字、标识符、运算符、标点符号、分隔符
[关键字]由系统预定义的具有特殊功能的词法符号,记32个
分类:
存储类型:auto(自动型)、static(静态型)、extern(外部引用)、register(寄存器)
数据类型:char、short、int、long、float、double、signed、unsigne
构造类型:struct(结构体)、union(共用体)、enum(枚举)
选择结构:if、else、switch、case、default
循环结构:for、while、do、goto、break、continue
其他       : void(空类型)、typedef(重定义)、volatile(防止编译器优化)、const(只读修饰)、sizeof(计算数据所占内存大小,用得多)、return(返回值,函数遇到即结束)

[标识符]用来表示变量、函数、用户自定义的项目名称(hello.c、string.c等)
命名规则:
1、由数字、字母、下划线组成
2、开头不能是数字
3、不能和关键字重复
4、自己看到名字能看懂

[运算符]
1、算术运算符
+  -  *  /  %  ++  --
/:整数相除,向下取整,输出数
int    a = 5/2;      //2
float b = 5/2;      //2.000000
float c = 5/2.0;   //2.500000
%:只能用于整数运算,输出余数
10%3    ==  1
15%10  ==  5
如:
[1]123取百位、十位、个位
百位:123/100            ==    1
十位:123/10%10       ==    2
个位:123%10            ==    3
[2]2345
千位:2345/1000        ==  2
百位:2345/100%10   ==  3
十位:2345/10%10     ==  4
个位:2345%1000      ==  5

++:自加,注意++的前后位置,来判断先运算还是先自加
[1]赋值运算:
int  a = 3;
int  b = a++;         //b=3,a=4,++在后,先赋值后自加1
int  b = ++a;         //b=4,a=4,++在前,先自加后赋值
[2]打印语句
int  a = 3;
printf("%d\n",a++);   //3,++在后,先打印后自加
printf("%d\n",++a);   //4,++在前,先自加后打印
[3]独立成句
int a = 3;
a++;   //4,a = a+1;
++a;   //4,a = a+1;
注意:a++不等同于a+1
--:同理

2、逻辑运算符
&&: 逻辑与,全真则真,一假则假
 ||  : 逻辑或,一真则真,全假则假
 !: 逻辑非,非真则假,非假即真截断法则:
[1]逻辑与运算中,只要前面有一个为假,则后面表达式不执行
[2]逻辑或运算中,只要前面有一个为真,则后面表达式不执行

3、位运算符
&  |  ~   ^  <<   >>
&:位与 全1则1,有0则0
|:位或 有1则1,全0则0
^:异或 不同为1,相同为0
[码制]
~:取反 0变1,1变0正数的源码、反码、补码都是本身;负数的源码是本身、反码是除了符号位以外取反、补码是反码+1
负数以补码的形式存放在计算机中 
<<:左移,左移几位右边补几个0

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

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

6、三目运算符
表达式1?表达式2:表达式3
执行顺序:先判断表达式1是否成立,成立执行表达式2,反之执行表达式3
运算符优先级
单目运算符  ! ~ ++ --
算术运算符  * / % + -
移位运算符  <<  >>
关系运算符  <  <=  >  >=  ==  !=
位与运算符  &
异或运算符  ^  |
逻辑运算符  &&  ||
条件运算符  ?:
赋值运算符  = += *= /= %= ...
口诀: 单算移关与 异或逻条赋
           从右向左单条赋


【标点符号】
分号,逗号,大括号,小括号,中括号


【分隔符】
换行,TAB,空格


【变量】在程序运行中,可以发生变化的量
定义格式:存储类型    数据类型   变量名
                    int      a
                   名称          字节数(32位)             取值范围
char           字符型             1字节               -2^7 ~  2^7-1
short          短整型             2字节               -2^15 ~ 2^15-1 
int                整型              4字节               -2^31 ~ 2^31-1
long           长整型             4字节              -2^31 ~ 2^31-1
float      单精度浮点型       4字节              有效数据位数6~7位
double  双精度浮点型       8字节             有效数据位数15~16位


【全局变量和局部变量区别】
                            全局变量                   局部变量
定义位置             函数外部                   函数内部
初值                未赋初值时为0      未赋初值时为随机值
存储位置               全局区                        栈区
生命周期        随程序结束而结束    随函数结束而结束
作用域             作用于整个程序       作用于函数内部



 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值