C语言学习(二)
数据类型及运算符
一、 数据类型
-
命名规则:标识符(Identifier)是给变量或函数还有常量起的名字,它遵循以下规则。
(1)标识符严格区分大小写。例如for与For是两个不同的标识符;
(2)标识符可由字母(A ~ Z,a ~ z)、数字(0 ~ 9)、下划线—_组成字符串,且▲开始字符必须为字母或者下划线;
(3)标识符最好不能超过8位,并且不能为C语言的关键字;
(4)标识符意义要做到“见其名知其意”; -
变量及赋值:变量就是可以变化的量,而每个变量都会有一个名字(标识符)。变量占据内存中一定的存储单元。使用变量之前必须先定义变量,要区分变量名和变量值是两个不同的概念。就好比:住在房间里的客人与房间号是两个不同的概念。
(1)变量定义形式:数据类型 变量名;
多变量定义形式:数据类型 变量名 变量名…;★注意:在变量定义中不允许连续赋值,如int a = b = c = 5;为不合法定义
(2)变量的赋值可分为两种方式:
①先声明,后赋值
②声明的同时即赋值,例如:
-
常量(constant)
定义:在程序运行过程中,其值不能被改变的量称为常量
分类:数值常量和符号常量
类型:整形、实型、字符型等
命名:符合标识符命名规则
(1)常用转义字符:
(2)符号常量和枚举常量:
①符号常量之命名常量:
一般采用全大写字母表示,语法:const 数据类型 标识符 = 数值常量;,const的作用就是“冻结”一个量,它的值不能被修改,是一个只读(read only)量。优点:比数值常量可读性好、修改容易。例:
②符号常量之宏常量:
还可以宏定义符号常量,语法:#define 符号量 常量值,注意:#define一般都是定义在程序的头,#include之后,main之前。例:
③枚举常量:
常量值是固定的几个选项,语法:enum 枚举标志名{常量1, 常量2,…};,虽然枚举常量可以被当做一个整数使用,但这里强烈不建议大家这么做,仅仅将它作为状态的表示,而不使用它们参与运算。例: -
基本数据类型
其中还有空类型:void
整型(int) // short,long(提供两个限定符来限定整型,short至少16位,long至少32位,长度:long > int > short);
字符型(char);单精度浮点型(float);双精度浮点型(double)
★注意:数字前缀和后缀的含义:
前缀带0,该常量为八进制;0X为是十六进制
后缀F表示float;L表示long;UL表示unsigned long
字符常量在表示中用单引号括起来
在这里应当注意取值范围,如果小于或者大于其范围,系统则会提示Overflow(溢出)
-
格式化输出语句
格式化输出语句,也就是占位输出,格式常为:printf(“输出格式符”,输出项),对于我个人的理解,格式化就是替换量输出,其本质不变,代数变;
★常用格式符
(1)%d:带符号十进制整数,例:ans:10
(2)%c:单个字符,例:ans:c
★注意:单个字符为单引号’’
(3)%s:字符串,例:
ans:我的博客
(4)%f:浮点数六位,例:ans:3.140000
-
定义一个不可变的常量,例:
ans:圆周率:3.140000
-
自动类型转换与强制类型转换
(1)自动类型转换发生在不同的数据类型运算中,根据其字节数进行转换,这里给大家一个简单易记的比喻:装满水的小杯子可以将其中的水倒入空的大杯子里,但是装满水的大杯子把水倒入小杯子中一定会漫出来;类型转换中的字节数的大小对应起容量,只能字节小的可以向字节大的自动转换,但字节大的不能向字节小的自动转换。
字节大小比较:double(8) > float、long、int(4) > short(2) > char(1)
(2)强制类型转换是通过定义类型转换运算来实现,基本形式:(数据类型)(表达式),它可以强制将高字节转化为低字节,例如:double a = 3.14;int a = (int)a;输出后的值是由3.140000转变为3
★注意:1.数据类型和表达式括号不能少;2.此转化只是本次运算中临时性改变,其原数据的变量值和类型不改变;3.转换的运算不遵循四舍五入原则,例如:将double转换为int,直接省去double小数点后所有值。
二、运算符
-
运算符号是什么?在小学的时候我们就会各种各样的运算,如:加法运算、乘法运算等,我们把它们称为四则运算,而在我们C语言中同样也有如下运算符:
※算术运算符 [加(+)、减(-)、乘()、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种,用于各类数值运算。]
※关系运算符 [大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种,用于比较运算。]
※逻辑运算符 [与(&&)、或(||)、非(!)三种]
※位操作运算符 [位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种,用于参加运算的量,按照二进制位进行运算]
※赋值运算符 [简单赋值(=)、复合算术赋值(+=,-=,=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种]
※三目运算符(条件运算符) (条件求值( ? : ))
※逗号运算符 (把若干表达式组合成一个表达式(,))
※指针运算符 (用于取内容(*)和取地址(&)二种运算)
※求字节数运算符 (计算数据类型所占的字节数(sizeof))
※特殊运算符 (括号(),下标[],成员(→,.)等几种)
下面我将对部分运算符作出详细的补充说明! -
运算符中常见注意事项:
(1)自增与自减:来源:www.imooc.com,在这建议各位一定要去看看!
(2)复合运算符中,例如:“+=”中间是不存在空格的;算术运算符中没有“×”也没有“÷”;赋值运算符中要牢记等号赋值一定要双等“==”!!!!!
(3)逻辑运算符(布尔(Boolean)运算符):
与运算(&&):全真才为真,有假即假;
或运算(||):有真即真,全假即假;
非运算(!):真即假,假即变为真。
(4)三目运算符:
( 表达式1 ? 表达式2 : 表达式3 );先执行表达式1,如果为真执行表达式2;假的话执行表达式3。
(5)sizeof运算符:
sizeof(类型名)或sizeof(变量),计算类型或变量在内存中所占字节数。
★指针运算符等特殊运算符,后面对应地方讲解 -
运算符优先级:
同一级别结合方向为“自左至右”。
还有某些细节问题以后进行补充QAQ。