为了期末复习,欢迎大家私聊补充,谢谢大家复习时简单过一下此知识点
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) * 。 只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。如年月日的输入