c语言基础

1、转义字符

 

2、常量

在程序运行期间,其数值不会被改变的量

2.1 字符常量

‘a’ ‘b’ ‘c’

2.2 整型常量

二进制:0110

八进制:066

十进制:99  -2

十六进制:0x234

注意:默认情况下,整型常量是有符号的int型(long、short、long long)

无符号的int型数:66U

长整型:66L

无符号的长整型:66UL

2.3 浮点型常量

小数:1.23   0.0001     10000(浮点型常量包含整型常量)

指数形式:(1e-4)      1e+4

2.4 字符串常量

“hello”占几个字节

注意:字符串以’\0’作为结束符

2.5 标识常量(宏)

#define 宏名 表达式

注意:

  1. 宏名一般用大写,小写也可以,因为为了和变量区分,所以用大写
  2. 宏后面没有分号

宏只是单纯的替换

宏函数(既有函数的特点又有宏的特点)

#define 函数名(形参) 函数体

注意:宏只是单纯的替换,不会考虑运算符的优先级问题,所以需要给每个形参加括号,整个表达式加括号

3、变量

 

如何定义一个变量?

存储类型 数据类型  变量名;

存储类型:决定了开辟的空间在内存中的哪个分区

数据类型:决定了要开辟的内存空间的大小

变量名:开辟的空间的名字

 

3.1 局部变量

定义在函数体(任何函数体)内部的变量

3.2 全局变量

定义在函数体外的变量

3.3 存储类型

存储类型:auto、extern、static、register

auto:修饰的变量存储在栈区,只能修饰局部变量

extern:修饰的变量存储在静态区,只能修饰全局变量

static:修饰的变量存储在静态区,可以修饰局部变量和全局变量

register:修饰的变量存储在寄存器中,只能修饰局部变量

总结:

  1. 除了static和register修饰的局部变量外,其他都存在栈区
  2. 全局变量存储在静态区
  3. 静态变量存储在静态区

3.4 初始化

初始化:在定义变量时对变量赋值

  1. int a = 10;//初始化
  2. int a;

a = 10;//赋值

总结:

  1. 全局变量没有初始化其值默认为0
  2. 局部变量没有初始化其值默认为随机值

auto:修饰局部变量,存储在栈区

register:修饰局部变量,存储在寄存器中,建议将变量存储在寄存器,可以提高程序的运行速度,最终是否在寄存器中,取决于编译器,如果没有寄存器,存储在栈区

extern:修饰全局变量,存储在静态区

程序可以有多个.c文件来组成,但是一个程序只能有且仅有一个main函数

作用:告诉编译器,这个全局变量已经在其他文件定义过了

static:修饰的变量在静态区,即可以修饰局部变量也可以修饰全局变量

1.static修饰局部变量,延长了局部变量的生命周期,如果局部变量没有初始化,其值为0,如果初始化只能初始化一次

2.修饰全局变量,只能在本文件内使用(限制了全局变量的作用域)

.5 生命周期和作用域

3.5.1生命周期

从什么时候开辟空间到什么时候释放空间

3.5.2 作用域

使用的范围

局部变量:

生命周期:从定义开始,到模块(大括号)结束

作用域:大括号内

static修饰的局部变量:

生命周期:从定义开始,到程序结束

作用域:大括号内

全局变量:

生命周期:从定义开始,到程序结束

作用域:整个程序

static修饰的全局变量:

生命周期:从定义开始,到程序结束

作用域:本文件内

4、数据类型转换

4.1 强制类型转换(我们自己转的)

4.2 隐式类型转换(编译器转的)

5、运算符

单算移关与,异或逻条赋

单目运算符、算术运算符、左移右移、关系运算符、按位与、异或、按位或、逻辑运算符、条件运算符、赋值

5.1 算术运算符

+、-、*、/、%、++、--

注意:%不能用于浮点数

++在前:++a 先自加,再赋值

++在后:a++ 先赋值,再自加

注意:如果++a或者a++自成立一条语句,都当作a = a+1

5.2 关系运算符

>、<、>=、<=、==、!=

5.3 逻辑运算符

&&、||、!

表达式1 && 表达式2

&&截断法则:有一个为假,结果就为假,前一个为假,后面就不进行运算了

表达式1 || 表达式2

||截断法则:有一个为真,结果就为真,前一个为真,后面就不再进行运算了

5.4 sizeof运算符

sizeof(数据类型) 或 sizeof(变量名)

5.5 三目运算符

表达式1?表达式2:表达式3

判断表达式1的值是否成立,如果成立,将表达式2的值作为整个表达式的值,否则,将表达式3的值作为整个表达式的值

5.6 逗号运算符

表达式1,表达式2,表达式3…………表达式n

从左至右依次计算每个表达式的值,将表达式n的值作为整个表达式的值

注意:逗号运算符的优先级是最低的,使用的时候加上括号

1. 设int i=2,j=3,k=4,a=4,b=5,c=3;,则执行表达式(a=i<j)&&(b=j>k)&&(c=i,j,k)后,c值是(3)

5.7 位运算符

&、|、~、^、<<、>>

5.7.1 与运算(&)

1101 0011 

& 0110 0101

  0100 0001

案例:将1101 0011的0~2位清零

  1101 0011

& 1111 1000 (~0000 0111)à~0x7

  1101 0000

5.7.2 或运算(|)

  1101 0101

|  0110 1101

  1111 1101

案例:将1101 0101的3~5位变成101

  1101 0101

& 1100 0111

  1100 0101

|  00101000

  11101101

5.7.3 取反

~1101 0010 --->0010 1101

5.7.4 异或

相同为0,不同为1

  1101 0010

^ 0100 1000

  1001 1010

5.7.4 左移

左移:高位丢弃,低位补0

将1左移两位

0000 0001 –>0000 0100

5.7.5 右移

无符号数:地位丢弃,高位补0

有符号数:低位丢弃,正数高位补0,负数高位补1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值