C语言基础(1)

  • 词法符号

1.关键词

是由系统预定义的词法符号,有特定的含义,不允许用户重新定义。下面是一些基本关键字:

(1)存储类型:auto(自动型) static(静态) extern(外部引用) register(寄存器)

(2)数据类型:char(字符型) short(短整型) int(整型) long(长整型) float(浮点型) double(双精度浮点型) unsigned(无符号) signed(有符号)struct(结构体) union(共用体) enum(枚举) void(空类型)

(3)控制语句:if(条件语句) else(条件语句中否定分支) while(循环语句的循环条件) do(循环语句的循环体)for(一种循环语句) switch(开关语句) case(开关语句分支) default(开关语句中其他分支) break(中断循环) continue(继续下一轮循环) goto(跳转) return(返回)

(4)其他:sizeof(计算数据所占空间大小) const(声明只读变量)typedef(重命名) volatile(防止被编译器优化)

2.标识符

是由程序员按照命名规则自行定义的词法符号,用于定义宏名、变量名、函数名和自定义类型名等。

C语言的命名规则如下:

1) 标识符由一个或多个字母、数字或下划线组成

2)标识符的第一个字符必须是字母或下划线

3)标识符不能与任何关键字相同

3.运算符

运算符是表示运算的词法符号,C语言有非常丰富的运算符,按功能可以分为:算术运算符、 逻辑运算符、关系运算符、位运算符、赋值运算符、其他运算符

  1. 算术运算符:+,-,*,/,%,++,--
  2. 逻辑运算符:!,&&,||
  3. 关系运算符:<,>,>=,<=,==,!=
  4. 位操作运算符:&,|,~,^,<<,>>
  5. 赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=
  6. 其他运算符:三目运算符, sizeof()

4.分割符

是用来分隔其他的词法符号,主要包括: 空格符、制表符、换行符号、注释。

通过对分隔符的恰当运用,使得代码的外观格式更为清晰易读,还可以帮助分析程序中的语法错误

5.标点符号 

C语言中的标点符号有逗号、分号、冒号、花括号、圆括号。标点符号的作用与分隔符相似,但用法非常严格,有着明确的语法规定。有些标点符号出现在表达式中时,当作运算符使用。

(1) 逗号

在定义变量语句中,用于分隔变量名

在函数的参数表中,用于分隔函数参数

(2)分号

用于表达式语句的结束

在for循环语句中,分隔括号内的三个表达式

单独出现,构成一条空语句

(3) 冒号

用于三目运算符

用于switch case语句中case块中

(4) 花括号

用做枚举类型定义的开始和结束

用做数组初始值定义的开始和结束

用做函数体的开始和结束

用做语句块的开始和结束

用做结构类型定义块的开始和结束

(5) 圆括号

用在函数头定义中,作为参数表的开始和结束

用在流程控制语句中,作为条件表达式的开始和结束

用在函数调用中,作为参数表的开始和结束

  •  基本数据类型

1.变量

类型

存储大小

值范围

char

字符类型

1 字节

-2^7 到 (2^7-1)

unsigned char

无符号字符类型

1 字节

0 到 (2^8-1)

int

整数类型

4 字节

-2^31 到 (2^31-1)

unsigned int

无符号整数类型

4 字节

0 到 (2^32-1)

short

短整型

2 字节

-2^15 到 (2^15-1)

unsigned short

无符号短整形

2 字节

0 到 (2^16-1)

long

长整型

4 字节

-2^31 到 (2^31-1)

unsigned long

无符号长整形

4 字节

0 到 (2^32-1)

float

单精度浮点型

4字节

有效数据6-7位

double

双精度浮点型

8字节

有效数据15-16位

注:64位操作系统long类型为8字节

局部变量与全局变量区别

局部变量

全局变量

  1. 定义位置

函数体内部

函数体外部

  1. 存储位置

栈区

全局区

  1. 生命周期

同函数体共存亡

同整个程序共存亡

  1. 作用域

作用于函数体内部

作用域整个程序

  1. 初值

未初始化,值为随机值

未初始化时,值为0

2.常量

2.1 字符型常量

 

类型

存储大小

值范围

char

字符类型

1 字节

-128 到 127

unsigned char

无符号字符类型

1 字节

0 到 255

signed char

带符号字符类型

1 字节

-128 到 127

 

原码、反码和补码:

  1. 最高位表示符号位,正数是0,负数是1。
  2. 正数原码、反码和补码都是一样的。
  3. 负数要用补码来计算:
  • 原码就是在数值前面直接加符号表示
  • 反码等于原码的符号位不变其余按位取反
  • 补码等于反码加一

2.2字符串常量

通过“”包括起来的为字符串常量,'\0'是字符串结束的标志

2.3整型常量

2.4浮点型常量

2.5指数常量:通过科学计数法进行表示 

2.6标识常量(宏定义)

宏定义:起到标识作用的

(1)只是单纯的进行文本替换,在预处理的时候进行。

(2)遵循标识符的命名规则

(3)一般大写表示

格式: #define 宏名 常量或表达式

3.运算符和表达式

运算符按功能分为:算数运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符

3.1算术运算符:+ - * / % ++ -- 

/:整数相除,向下取整;%只能用于整数运算,取余;++自增;--:自减

3.2赋值运算符:= += -= *= /= 

3.3关系运算符:> < <= >= == !=

运算符

名称

示例

功能

缩写

<

小于

a<b

a小于b时返回真,否则返回假。

LT

<=

小于等于

a<=b

a小于等于b时返回真,否则返回假。

LE

>

大于

a>b

a大于b时返回真,否则返回假。

GT

>=

大于等于

a>=b

a大于等于b时返回真,否则返回假。

GE

==

等于

a==b

a等于b时返回真,否则返回假。

EQ

!=

不等于

a!=b

a不等于b时返回真,否则返回假。

NE

 3.4逻辑运算符:&& || !

&&(逻辑与):全真则真,一假则假;||(逻辑或):一真则真,全假则假;!(逻辑非):非真为假,非假为真

注:短路法则/截断法则

逻辑或||运算中: 如果前面的表达式为真,则后面的表达式不执行。

逻辑与&&运算中: 如果前面的表达式为假,则后面的表达式不执行。

3.5位运算符:& | ^ ~ << >> 

含义

C语言

按位与

a&b

按位或

a|b

按位异或

a^b

按位取反

~a

左移

a<<b

右移

a>>b

无符号右移

/

注意:负数都是用补码进行运算的

置一公式和置零公式

置一公式: a | (1<<n)

置零公式: a & (~(1<<n))

(注意:n代表位数-1)

3.6特殊运算符

三目运算符:表达式1?表达式2:表达式3(先求解表达式1,为真执行表达式2,为假执行表达式3) ;sizeof(数据类型或变量名)计算所占字节数

3.7运算符优先级

口诀:单算移关与,异或逻条赋,从右向左单条赋

  • 输入输出

1.按字符输入输出

按字符输出:putchar();按字符输入:getchar()

2.按格式输入输出

按格式输出:printf()

格式:%d int;%ld long;%f float;%lf double;%c char;%s 字符串;%x 十六进制;%o 八进制;%u 十进制无符号整;%p 地址;%e 指数;%m.n含义:

.n: 对实数指定小数点后的位数(四舍五入)

对字符串,指定实际输出的位数

m: 位宽,输出数据的域宽,数据长度<m, 左边补空格,否则按实际输出。

-: 左对齐,默认右对齐

0:输入数值时时指定左边不用的空位置自动补0

按格式输入:scanf()

垃圾字符问题 :scanf函数输入回车符的问题,当用%c方式输入字符时,回车符会被下次的%c接收到。其他给格式不会出现这种问题

  • 控制语句

1.分支语句

1.1 if语句

if(表达式)

{

   语句块1;

}

else

{

    语句块2;    

}

执行顺序:如果条件成立,执行语句块1,条件不成立执行语句块2
1.2 switch case语句

switch(变量或表达式)

{

case 常量1: 语句块1; break;

case 常量2: 语句块2; break;

case 常量3: 语句块3; break;

...

case 常量n: 语句块n; break;

default: 语句块n+1;

}

当变量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,除非遇到break, 语句跳出switch语句为止。如果变量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句。

2.循环语句

2.1 for循环

for(表达式1;表达式2;表达式3)

{

语句块;

}

表达式1:赋初值;表达式2:判断的判断条件;表达式3:增值或减值 

执行顺序:首先执行表达式1进行赋值,然后判断表达式2是否成立,如果成立就进入循环执行语句块,再执行表达式3进行增值或减值然后继续判断表达式2是否成立,直到表达式2不成立退出循环。

2.2 while循环

while(判断条件)

{

语句块;

增值或减值语句;

}

2.4 循环控制语句 

break continue goto

  1. break: 直接结束循环
  2. continue: 结束本次循环,继续下一次循环
  3. goto: 强制跳转到标签位置,可以应用于多重循环嵌套。(尽量不要使用!)
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值