考研攻坚战之C语言常见概念及数据类型相关概念

目录

1、转义字符

 2、C语言语句分类

控制语句

关于注释

3、打印类型

4、 数据类型介绍

数据类型、大小、以及计算单位 

布尔型

数据类型的长度

5、signed 和 unsigned 

有关于int char的区别注意:

 6. 数据类型的取值范围

7. 变量

变量的分类

8. 算术操作符:+、-、*、/、% 

​编辑9. 赋值操作符:= 和复合赋值 

赋值

复合赋值:

10. 单⽬操作符:++、--、+、- 

11. 强制类型转换

 12. scanf和printf介绍 

printf

占位符

 scanf

返回值

赋值忽略符


1、转义字符

printf("angu\0yxs");//转义字符是字符结束标志

\? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证了。

• \' :⽤于表⽰字符常量'
• \" :⽤于表⽰⼀个字符串内部的双引号
• \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。
• \b :退格键,光标回退⼀个字符,但不删除字符。
• \f :换⻚符,光标移到下⼀⻚。类似于\v

• \n :换⾏符。
• \r :回⻋符,光标移到同⼀⾏的开头。
• \t :制表符,光标移到下⼀个⽔平制表位,8位是包含前边隔开的几位如:abc\t那就是8-3=5位
• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。

• \ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X 
• \xdd :d d表⽰2个⼗六进制数字。 如: \x30 表⽰字符0 

注意:二进制/八进制/十六进制转变为十进制或者互转

 2、C语言语句分类

空语句

“;”就是一个空语句

表达式语句

eg:3+5;就是一个表达式语句

函数调用语句

为了让算法的复写性更高,函数调用很有必要

复合语句:代码块

控制语句

控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选 择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句。

可分成以下三类:

1. 条件判断语句也叫分⽀语句:if语句、switch语句;

2. 循环执⾏语句:do while语句、while语句、for语句;

3. 转向语句:break语句、goto语句、continue语句、return语句。

虽然大概只有九种但是十分重要基本上要写的代码里边都要用到。

具体如何来写:(写完这一篇会在这里加个链接)

关于注释

有/* */多行注释和//单行注释两种,注释在编译时会被编译成为一个空格

注释快捷键:ctrl+k+c

取消注释快捷键:ctrl+k+u

3、打印类型

 三字母词
* ??)——   ]
* ??(——   [

%d——打印整型
%c——打印字符
%s——打印字符串
%f——打印float类型的数据
%lf——打印double类型的数据
%zu——打印sizeof的返回值

4、 数据类型介绍

数据类型、大小、以及计算单位 

整型,字符型,浮点型

布尔型

必须包含指定头文件、返回结果是false/true

小写bool与大_写BOOL

数据类型的长度

sizeof() 用以计算长度,单位是字节sizeof()种的表达式不计算

sizeof(long)>=sizeof(int)后者是4、前者可能4/8取决于编译器不同

关于sizeof的%d和%zd,如上图中的波浪线想去掉、用%zd即可。

每个类型长度可参考数据类型介绍图。

sizeof 运算符的返回值,C语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给 系统⾃⼰去决定, sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是 unsigned int ,也有可能是 unsigned long ,甚⾄是 unsigned long long , 对应的 printf() 占位符分别是 %u 、 %lu 和 %llu 。这样不利于程序的可移植性。

C语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返 回值类型。对应当前系统的 sizeof 的返回值类型%zd,可能是 unsigned int ,也可能是 unsigned long long 。


5、signed 和 unsigned 

 signed 和 unsigned 修饰的是字符类型和整型,

signed:表示带正负号、可以标示负数,(即有符号的数等)

unsigned 表示不带正负号、不能表示负数。

int a;是signed的int,unsigned不可省略。

有关于int char的区别注意:

整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。

C语⾔规定 char 类型默认是否带有正负号,由当前系统决定。这就是说, char 不等同于 signed char ,它有可能是 signed char ,也有可能是 unsigned char 。

 
6. 数据类型的取值范围

 limits.h ⽂件中说明了整型类型的取值范围。

float.h 这个头⽂件中说明浮点型类型的取值范围。


7. 变量

C语⾔中把经常变化的值称为变量,不变的值称为常量。

变量在创建的时候就给⼀个初始值,就叫初始化。

eg:int a=10;

变量的分类

• 全局变量:在⼤括号外部定义的变量就是全局变量 全局变量的使⽤范围⼴,整个⼯程中都可使用。

• 局部变量:在⼤括号内部定义的变量就是局部变量 局部变量的使⽤范围是⽐较局限,只能在所在的局部范围内使⽤的。

有关变量的生命周期需要注意一下。

当局部变量和全局变量同名的时候,局部变量优先使⽤。


8. 算术操作符:+、-、*、/、% 

 C语⾔中为了⽅便运算,提供了⼀系列操作符,其中有⼀组操作符叫:算术操作符。分别是: + - * / % ,这些操作符都是双⽬操作符。

+、-、*、/、% 两端都需要有操作数、因此得名。

尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是 1.5 。原因就在于c语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。

如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时c语⾔就会进⾏浮点数除法。

运算符 % 表⽰求模(余)运算,即返回两个整数相除的余值。这个运算符只能⽤于整数,不能⽤于浮点 数。

负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。

 用代码大致表示一下


9. 赋值操作符:= 和复合赋值 

赋值

在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值。

赋值操作符 = 是⼀个随时可以给变量赋值的操作符

连续赋值

赋值操作符也可以连续赋值,

c = b = a+3;//连续赋值,从右向左依次赋值的。

建议还是拆开来写,这样⽅便观察代码的 执⾏细节。

复合赋值:


10. 单⽬操作符:++、--、+、- 

 ++a是先+1,后使⽤;

a++是先使用,再+1;

--a是先-1,后使⽤;

a--是先使用,再-1;


11. 强制类型转换

 在操作符中还有⼀种特殊的操作符是强制类型转换,语法形式很简单

int a = (int)3.14;//意思是将3.14强制类型转换为int类型,这种强制类型转换只取整数部分

 
12. scanf和printf介绍 

printf

printf() 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以 定制输出⽂本的格式。

占位符

“占位符”,就是这个位置可以⽤其他值代⼊。

占位符的第⼀个字符⼀律为百分号 % ,第⼆个字符表⽰占位符的类型 

%d——打印整型
%c——打印字符
%s——打印字符串
%f——打印float类型的数据
%lf——打印double类型的数据
%zu——打印sizeof的返回值

%5d 表⽰这个占位符的宽度⾄少为5位。如果不满5位,对应的值的前⾯会添加空格。输出的值默认是右对⻬。如果是%-5d可以直接左对齐。

 scanf

scanf() 处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等

变量前⾯必须加上 & 运算符(指针变量除外),因为 scanf() 传递的不是值,⽽是地址, 即将变量 i 的地址指向⽤⼾输⼊的值。

 scanf() 处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存 进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条 件的字符为⽌。

 

-0.45并不能被准确表示。

返回值

scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。

如果没有读取任何项,或者匹配失败,则返回 0 。

如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF (-1)。  

报错演示: 

 

scanf在读取数据时候的时候不看到底栈有多大、而是直接存储,可能会越界的情况的存在。

scanf() 常⽤的占位符如下,与 printf() 的占位符基本⼀致。

• %c :字符。

• %d :整数。

• %f : float 类型浮点数。

• %lf : double 类型浮点数。

• %Lf : long double 类型浮点数。

• %s :字符串。

• %[] :在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合的字符,匹配将会停⽌。

上⾯所有占位符之中,除了 %c 以外,都会⾃动忽略起⾸的空⽩字符。 %c 不忽略空⽩字符,总是返 回当前第⼀个字符,⽆论该字符是否为空格。 如果要强制跳过字符前的空⽩字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表示跳过零个或多个空⽩字符。

占位符 %s ,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个⾮空⽩ 字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌。 

赋值忽略符

正常情况:

scanf() 提供了⼀个赋值忽略符(assignment suppression character) * 。 只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值