2.1常量数据
(1)整形常量:
十进制:日常生活使用的数据。
八进制:以0开头,后面位数没有要求。
十六进制:以0X开头,后面位数没有要求。
注意:八进制里数值最高是7,十六进制最高是F。
(2)实型常量:又叫浮点型,分为单精度和双精度,所谓精度是指所表达精确程度的大小。指数会在选这题中遇到,其需注意的是e(不分大小写)前必须有数字,且e后必须是整数。
(3)字符常量:用单引号括起来的一个字符,例如 ’ a ’, ’ 1 ’等这些都叫字符常量。
(4)字符串常量:用双引号括起来的字符,例如“a”,“china”等等。
注意:“a”和‘a’完全不一样!
2.2变量定义
类型说明符 变量名:
类型说明符顾名思义就是你要定义的类型是什么,而变量名就是通过这个名字去找到这个变量。
为了减小奇异性,编程要求变量名不应是C语言预设名,例如int,for,等等。(编译器通常会把他们变成别的颜色)
类型说明符有:
类型 | 名称 | 储存空间(单位字节) |
char | 字符型 | 1 |
int | 整形 | 2 |
float | 单精度浮点数 | 4 |
double | 双精度浮点数 | 8 |
变量定义实例:
char a;//将a定义成字符型,它用来储存字符。
int a;//将a定义为整形,它用来储存整形数。
2.3变量的赋值
变量赋值时要使用赋值符号“=”,就是将右边的值传给左边,赋值符号(最好)左右两边类型相同,如果不相同就类型转换了,数组与变量不可以转换。
实例:
int a=5;
char b=’a’ ;
错误赋值:
char b=”a”;
因为将b定义为字符型,而赋值为字符串型。字符串只能储存在数组或指针中,将在后面提及。
注:变量赋值可能会出现溢出,每个数据类型都有其表示范围,其表示范围就是2^[(字节个数)*8-1],如果有特殊要求可以使用类型修饰符,但是不太常用,自己了解。
2.4类型转换
类型转换有两种形式,一个是自动类型转换,一个是强制类型转换。
听名字也知道自动类型转换是系统进行自动的转换,强制类型转换是编程人员强制将类型转换成所需要的类型,
(1)自动类型转换
就是在计算时先将类型转换成相同类型,再计算,那么如何转换成相同类型成为关键,规律就是字节小的像字节大的转换(依旧满足类型修饰符),例如int与char进行计算,那么结果就是int型的。唯一不满足这个规律的就是float,这个就是将它单拿出来记忆,float与除了float类型就行计算结果都是double。
(2)强制类型转换
(类型说明符)表达式;
例如:
(int )a;//就是将a强制类型转换为整形。有可能编译器下方会出现警告,提示精度缺失。
2.5运算符和表达式
运算符就是一个符号,表达式是一个式子,切记无“;”,例如a+b这就是一个表达式,但是a+b;这就不是一个表达式。
算术运算符
就是日常生活中的四则运算,但多了一个%,这个是取余运算,就是结果是余数,例如9%2结果就是1,其他的与小学的算法没有什么不一样的,但运算时候应该注意两边的运算的类型,比如9/2结果4,如果这个例子你还想要思考的话,那就应该看看数据类型转换那地方啦,两边都是int型结果依旧是四,但是有时候我们要的是带有小数的,那就进行类型转换。
关系运算符
关系运算符说白了就是两个数或表达式的关系,结果无非就是真和假,在系统看来,非0就是真,所以负数也是真,这是系统识别是的数时的判断,但机器反馈给我们的就是固定的了,真为1,假为0。(函数返回值除外,因为他们有固定的返回值,返回值是有固定的含义的)。
关系运算符有“<=”,“>=”,“<”,“>”,“==”,“!=”这几个,有人总是把“!”和“!=”弄混淆,分不清,其实很好区分的,就看!后有没有=,所以看见!,一定要看他后面是什么。符号用途应该也不用说,就是怎么写怎么读,就像的一个“小于等于”,当然最后一个不是“感叹等于”啦,它是不等号。
注:“==”在判断时很常见,很多人都会少个等号,导致变成赋值的,那么判断结果就是恒为真或假。
逻辑运算
逻辑运算就是我们高中学过的逻辑判断,就三个符号“&&”“||”“!”,与,或,非。
与:就是和嘛,也就是两个都得意思,所以是两个都满足才为真。
或:同上,就是它或它满足即可,所以是两个其中一个瞒住就可以。
非:没啥说的,就是真变假,假变真。(变真就是变为1)
赋值运算
分为基本赋值和复合赋值,基本就是“=”,复合就是“算数运算符+基本赋值”,遇见它就可以把它换成一个表达式。例如“a+=b”它就可以转化为“a=a+b”就是说a和b加完,赋值给a。
自增自减运算
一共有四个,可以分成两种“a++”,“a--”,“++a”,“--a”就是符号在前面就先计算,符号在后面就把这个语句执行完在计算,尽管这样对这个语句无影响,但对那个值自身有影响。
逗号运算符
就是在“,”赋值时候很常见比如:int a,b;这样就是a,b都是int型。如果在题中,就是将最后一个赋值给=左边的那个数,但,前的表达式依旧执行,所以值依旧会变。
条件运算符
表达式1?表达式2:表达式3
几乎没用,就是可以类比成if...else。
优先级比价
一共有十五个优先级:
1 () [] . ->
2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,
就着多吧 结合性:2 13 14 是从右至左
口诀
括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; //即== 和!=
位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和 &&
十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高
逗号运算级最低! //逗号运算符优先级最低
优先级是考试常考计算,没什么窍门就是先算优先级高的。