C语言学习笔记(二)

 

好算法的特性

1.有穷性 算法的操作步骤只能是有限的
2.确定性 算法中每一个步骤是确定的,而非含糊的,模棱两可的
3.有零个或多个输入 算法需要获取相关必要信息就是输入
4,有一个或多个输出 算法得到的结果就是输出
5,有效性 算法中每一个步骤都应能有效执行并得到确定结果

三种基本结构

(一)顺序结构

(二)选择结构(if,switch语句)

(三)循环结构(while,for语句)


C语言数据表现形式及其运算

常量和变量

一,常量(在程序运行过程中值不能被改变的量)

1,整型常量,包括正整型常量和负整型常量,eg:100,-78,0,678

2,实型常量,

     十进制形式,数字加小数点组成,eg:5.4,-88.2,0.0

   指数形式,以字母e或E代表以10为底的指数(e或E之前必须有数字,之后必须为整数),eg:56.66e3(56.66*10^3),-0.553E-7(-0.553*10^(-7))

3.字符常量,

    普通字符,字符常量只能是一个字符,以其代码(一般为ASCII码)存储,eg:'a','#','4'

    连续输入两个字符中间不能用空格隔开,因为空格也是一个字符,会赋值给第二个字符变量。

    转义字符,以\开头的字符序列,常见转义字符表:

转义字符 字符值 输出结果
\' 一个单撇号 '
\" 一个双撇号 "
\? 一个问号 ?
\\ 一个反斜线 \
\0 空(null) 作为字符串结尾字符(其后字符会被忽略)
\a 警告(alert) 发出声音或视觉信号
\b 退格(backspace) 当前位置后退一个字符
\f 换页(form feed) 当前位置移到下一页开头
\n 换行 当前位置移到下一行开头
\r 回车(carriage return) 当前位置移到本行开头
\t 水平制表符 当前位置移到下一个tab位置。注意:\t不是和前面字符保持固定距离,而是从前面字符开始移动到该行最接近的8字符倍数的位置,再输出。
\v 垂直制表符 当前位置移到下一个垂直制表对齐点
\o,\oo,\ooo(o代表一个八进制数字) 与该八进制码对应的ASCII值 与该八进制码对应字符
\xh[h](h代表一个十六进制数字) 与该十六进制码对应的ASCII值 与该十六进制码对应字符

4,字符串常量,用双引号而不能用单引号括起来,eg:"CHINA","56Bboy"

5,符号常量,用#define指定一个符号名称代表一个常量,eg:#define pi 3.1415926

二,变量(先定义,后使用)

变量名实际上是一个以一个名字代表的一个存储地址,eg:int a;

三,常变量

C99允许使用常变量,变量存在期间其值不能改变,eg:const int a=4;

符号常量常变量的区别:

#define是预编译指令,在预编译时进行字符替换,预编译后符号常量就不存在了(全部替换成对应值了),不对其分配存储单元,而常变量需要占用存储单元,只是值不改变,相比使用更加方便。

四,标识符

标识符可由字母,数字,下划线组成,且必须以字母或下划线开头(不能以数字开头)。

数据结构

用计算机进行的计算不是抽象的理论值的计算,而是用工程的方法实现的计算,许多情况下只能得到近似的结果。

c语言允许使用的数据类型:

C语言学习笔记(二)_第1张图片

其中基本类型(包括整型和浮点型)和枚举类型变量的值都是数值,统称为算术类型(arithmetic type).算术类型和指针类型统称为纯量类型(scalar type),因为其变量的值是以数字来表示的.枚举类型是程序中用户定义的整数类型。数组类型和结构体类型统称为
组合类型(aggregate type),共用体类型不属于组合类型,因为在同一时间内只有一个成员具有值。函数类型用来定义函数,描述一个函数的接口,包括函数返回值的数据类型和参数的类型。


整型数据

1.基本整型(int)

机器数:符号位+数值(0表示正,1表示负)

原码:计算机用原码计算困难,0的表示不唯一

反码:x>0: [x]原=[x]反,x<0:[x]反=对应原码符号位不变,数值部分按位取反,0的表示不唯一

补码:x>0: [x]原=[x]反= [x]补,x<0: [x]补=[x]反+1,0的表示唯一

⇒[x+y]补=[x]补+[y]补 ; [x-y]补=[x+(-y)]补=[x]补+[-y]补(将减法转化为了加法)

附:补码10000000为什么可以表示-128?:https://blog.csdn.net/u012814856/article/details/70850543

编译系统(根据操作系统具体情况)给int型数据分配两个字节或四个字节(VC下)的存储空间

2.短整型(short int)

类型名为short int 或short

编译系统给short int型数据分配两个字节(VC下)的存储空间

3.长整型(long int)

类型名为long int 或long

编译系统给long int型数据分配四个字节(VC下)的存储空间

4.双长整型(long long int)

类型名为long long int 或long long

编译系统给long int型数据分配四个字节(VC下)的存储空间

5.注意:

各种类型数据所占用存储单元长度由编译系统决定,c标准只要求:short<=int<=long<=long long

6.整型数据常见存储空间和值范围

C语言学习笔记(二)_第2张图片


字符型数据

字符型数据存储空间和值范围

C语言学习笔记(二)_第3张图片

注意:

1.对于只有正值的数据来说,可以在类型符号前加unsigned表示为无符号整数(即不考虑第一位的符号位),只有对整型数据(包括字符型)加signed(一般省略)和unsigned修饰符,实型数据不可以加。

2.如果把一个负整数赋给符号字符型变量是合法的,但它并不代表一个字符,而是作为一字节整型变量存储负整数


浮点型数据

c语言中,实数以指数形式存放在存储单元中,一个实数表示为指数可有不止一种表示形式,我们把小数点前数字为0,小数点后第一位数不为0的表示形式成为规范化的指数形式

1.float型(1bit(符号位)+8bits(指数位,补码形式划分)+23bits(尾数位))

C语言学习笔记(二)_第4张图片

每一个float型变量占据4个字节的存储空间,数值范围:-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38

在c语言中进行浮点数的算术运算时,将float型数据都自动转换为double型,然后进行计算

2.double型(1bit(符号位)+ 11bits(指数位,补码形式划分)+ 52bits(尾数位))

每一个double型变量占据8个字节的存储空间,数值范围:-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。

3.long double型

每一个long double型变量占据8个(VC)或16个字节(Turbo C)的存储空间

C语言学习笔记(二)_第5张图片


确定常量类型

整型常量

系统根据整型常量的值来确定将其作为int还是ong int还是long long int处理

在整数末位加大写L或者小写的l表示它是长整型,但是VC中int和long int都是4四字节,因此无必要使用long int型

浮点型常量

小数形式或者指数形式出现的实数都是浮点型常量,c编译系统把浮点型常量都按双精度处理,分配8字节。(进行编译时,对float变量分配4字节,对浮点型常量按双精度处理,分配8字节)

eg:float a=3.14159会警告可能存在精度损失

可以在常量末尾加专用字符,强制指定常量类型,如在3.14159后加F或f表示是float型常量,分配4字节,加L或l表示此常量为long double类型


运算符和表达式

基本算术运算符

C语言学习笔记(二)_第6张图片

注意:多数c编译系统(如VC)采用向零取整的方法,eg:5/3=1, -5/3=-1,取整后向零靠拢

自增,自减运算符

++i,--i:在使用i之前使i的值加(减)1

i++,i--:在使用i之后使i的值加(减)1

注意:自增,自减运算符只能用于变量,不能用于常量和表达式

优先级和结合性

详见:https://blog.csdn.net/qq_36369267/article/details/82940997

不同类型数据间的混合运算

(1)+、-、*、/运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算


(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型.然后进行运算,结果是double型


(3)字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算.如:12+'A',由于字符A的ASCII代码是65,相当于12+65,等于77。字符数据可以直接与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double型数据,然后进行运算

强制类型转换运算符

类型转换分为:系统自动进行的和手动进行的强制类型转换

(类型名)(表达式)

强制类型转换时,得到一个所需类型的中间数据,原来变量的类型未发生变化。

注意:强制类型转换运算优先于%运算 eg:若x为float型,x%5不合法,需要对x进行强制类型转换:(int)x%5

C运算符

C语言学习笔记(二)_第7张图片

 

你可能感兴趣的:(C/C++)