Bootstrap

关于C语言中的数据类型和变量的期末复习知识点

为了期末复习,欢迎大家私聊补充,谢谢大家复习时简单过一下此知识点

1. 数据类型介绍

这里这些数据类型要了解他们的长度与用途

(2)sizeof中表达式不计算

sizeof 在代码进⾏编译的时候,就根据表达式的类型确定了,类型的常⽤,⽽表达式的执⾏却要在 程序运⾏期间才能执⾏,在编译期间已经将sizeof处理掉了,所以在运⾏期间就不会执⾏表达式了。(通俗来说就是它里面的计算式后面不会使用)

2. signed和unsigned

C语⾔使⽤ signed 和 unsigned 关键字修饰字符型和整型类型的。signed 关键字,表⽰⼀个类型带有正负号,包含负值; unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。 对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int 。 由于这是默认情况,关键字 signed ⼀般都省略不写,但是写了也不算错。

unsigned可以扩大正整数的范围

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

3. 数据类型的取值范围(了解即可)

如果要查看当前系统上不同数据类型的极限值: limits.h ⽂件中说明了整型类型的取值范围。 float.h 这个头⽂件中说明浮点型类型的取值范围。

SCHAR_MIN , SCHAR_MAX :signed  char的最⼩值和最⼤值。

• SHRT_MIN , SHRT_MAX :short的最⼩值和最⼤值。

 • INT_MIN , INT_MAX :int的最⼩值和最⼤值。

 • LONG_MIN , LONG_MAX :long的最⼩值和最⼤值。

 • LLONG_MIN , LLONG_MAX :longlong的最⼩值和最⼤值。

• UCHAR_MAX :unsignedchar的最⼤值

• USHRT_MAX :unsignedshort的最⼤值。

 • UINT_MAX :unsignedint的最⼤值。

 • ULONG_MAX :unsignedlong的最⼤值。

• ULLONG_MAX :unsignedlonglong的最⼤值。

4. 变量

基本知识

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

2.全局变量:在⼤括号外部定义的变量就是全局变量

3.局部变量:在⼤括号内部定义的变量就是局部变量

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

变量的储存位置

1. 局部变量是放在内存的栈区

2. 全局变量是放在内存的静态区

3. 堆区是⽤来动态内存管理的

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

知识

 双⽬操作符+、-、*、/、%

有2个操作数的,位于操作符两端的就是它们的操作数,这种操作符也叫双⽬操作符

注:操作符也被叫做:运算符,是不同的翻译,意思是⼀样的。

除法

C语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分

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

取模

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

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

=赋值

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

C语⾔虽然⽀持这种连续赋值,但是写出的代码不容易理解,建议还是拆开来写,这样⽅便观察代码的 执⾏细节。

复合赋值

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

操作符简介

++是⼀种⾃增的操作符,⼜分为前置++和后置++,--是⼀种⾃减的操作符,也分为前置--和后置--.

想一下前置加加和后置加加的区别

+是正号,-是负号,都是单⽬操作符

8. 强制类型转换

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

俗话说,强扭的⽠不甜,我们使⽤强制类型转换都是万不得已的时候使⽤,如果不需要强制类型转化 就能实现代码,这样⾃然更好的。

9. scanf和printf介绍

printf

想要换行的话可使用\n

printf() 可以在输出⽂本中指定占位符。

占位符

这里我们把常见的占位符列出来,熟悉熟悉

%a :⼗六进制浮点数,字⺟输出为⼩写。

 %A :⼗六进制浮点数,字⺟输出为⼤写。

•%c :字符。

%d :⼗进制整数。

 %e :使⽤科学计数法的浮点数,指数部分的 e 为⼩写。

%E :使⽤科学计数法的浮点数,指数部分的 E 为⼤写。

%i :整数,基本等同于 %d 。

 %f :⼩数(包含 float 类型和 double 类型)。

%g :6个有效数字的浮点数。整数部分⼀旦超过6位,就会⾃动转为科学计数法,指数部分的 e 为⼩写。

• %G :等同于 %g ,唯⼀的区别是指数部分的 E 为⼤写。

• %hd :⼗进制short int类型。

 %ho :⼋进制short int类型。

其余的还有很多网上可以查一下

返回值 

printf返回值是变量或者占位符加一

输出格式

%5d 表⽰这个占位符的宽度⾄少为5位。如果不满5位,对应的值的前⾯会添加空格。输出的值默认是右对⻬,即输出内容前⾯会有空格;如果希望改成左对⻬,在输出内容后⾯添加空 格,可以在占位符的 % 的后⾯插⼊⼀个 - 号。

输出⼩数时,有时希望限定⼩数的位数。举例来说,希望⼩数点后⾯只保留两位,占位符可以写 成 %.2f 。

占位符 %.5s 表⽰只输出字符串“hello world”的前5个字符,即“hello”。

scanf

与printf非常相似(占位符)

输入样例

注意事项

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

用回车和空格都不影响

返回值 

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

如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量EOF(-1)。EOF-end of file ⽂件结束标志(一般不会考到,在VS环境中按ctrl+z  ) 

占位符 

与printf差不多

除了 %c 以外,都会⾃动忽略起⾸的空⽩字符。

如果要强制跳过字符前的空⽩字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表 ⽰跳过零个或多个空⽩字符。

scanf() 不适合读取可能包含空格的字符串,⽐如书名或歌曲名。另外, scanf() 遇到 %s 占位 符,会在字符串变量末尾存储⼀个空字符 \0

指定 读⼊字符串的最⻓⻓度,即写成 %[m]s

赋值忽略符

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

;