C语言数据类型、运算符,表达式
数值型数据知识点
1、标识符:有字母数字下划线三种字符组成,第一个字符为字母或下划线
2、d%:格式化标记,表示显示一个十进制数
3、八进制数字:以0开头,八进制的12就是012,(012)8 = (10)10
4、十六进制数字:以0x开头
5、无符号型比一般整形中的数据范围扩大一倍
注意,无符号型不能存负数
6、sizeof:能确定某一类型变量所占的内存是多少(目的是为了看某种类型变量在计算机内存中占多少个字节)
7、浮点数在内存中以指数形式存在着
数值类型 | 16位 | 32位 | 64位 |
---|---|---|---|
float(一般提供7位有效数字,保守估计6位) | 4 | 4 | 4 |
double(一般提供15到16位有效数字,保守估计15) | 8 | 8 | 8 |
8、断点调试(VS):停在这一行不是执行这一行,要执行这一行。F9
字符型数据类型知识点
字符型数据:
字符种类 | 解释 |
---|---|
常规字符 | 用单引号引起来的一个字符'a' |
特殊字符 | 转义字符,一\开头的字符序列(\n:换行) |
字符常量:
只能保存一个字符,因为一个字符型变量存在内存中只占一个字节
char c1,c2,c3;
c1 = 'a'; //实际上是把字符对应的ASCII码放到了变量所代表的内存中去
c2 = '\'';
注意:c%以字符形式输出
字符串常量:
用一堆双引号引起来的一堆字符(可以是一个字符,也可以说是多个字符)
c = 'a'; // 字符常量,只有a一个字节
c = "a"; //字符串常量,有a和\0 两个字节
注意:变量先定义后使用
数值间运算(数值型数据间的混合运算)
由低到高(int->unsigned(char,short)->long->double(float))
注意:->代表的是转化符
1、算术运算符 /(除,两整数相除,系统会舍弃小数部分) %(取余,也叫模运算符,该运算符两侧都要求为整数)
2、优先级问题:先乘除,后加减;如果优先级相同,从左到右结合;如果搞不懂优先级,那么就用()运算符把需要优先计算的内容括起来。
3、强制类型转换运算符:将一个表达式转换成所需要的类型:
int a = 10;
double b;
b = (double)a; //a本身类型并没有发生变化,而是赋值之后的变量b所存值的类型发生变化
总结强制类型转换运算符的一般形式:(类型名)(表达式)
eg: (int)(x+y)和(int)x+y的区别,前者是将x+y的值转换成整型,后者只是将x的值转换成整型
两种类型转换:
1、自动类型转换,系统替你转换数据类型
2、强制类型转换,当自动类型转换无法达到目的时,就是用强制类型转换
4、自增自减操作
++(自增) --(自减)
自增自减操作符只能作用于变量,不能用于常量和表达式
当自增自减运算符在变量后面,对于该自增自减表达式的使用时,先用后加,反之先加后用。
printf("i++的结果是%d",i++); // 先用后加,i++的结果是6,i的值本身变成7
printf("++i的结果是%d",++i); // 先用后加,++i的结果是7,i的值本身变成7
表达式:可以理解为 + - * / 串起来的一个式子
C编译器在处理时,会尽可能多的从左到右将若干个字符组成一个运算符
5、赋值运算符和赋值表达式: = 讲等号右边的值赋值给等号左边的变量,给变量一个值,或者是改变变量到某一个值
char a; //变量定义,系统会给a分配一个字节的内存,内存里面的值不确定
char a =90; //变量定义,同时把变量赋值处置(初始化变量),数值范围是-128-127
// 若赋值时溢出,则溢出后变量里面的内容也就变得不可预料
赋值原则:类型不同需要用到强制类型转换,当用强制类型转换时,开发者必须明确知道不会溢出。
复合的赋值运算符:在赋值运算符=前加上其他运算符,构成了复合的赋值运算符(复合的赋值运算符两个运算符之间必须紧挨着,不能用空格分开)
①、如果*=(优先级低)右侧是个表达式的话,则相当于表达式有括号
②、赋值表达式其本身也是有值的
③、赋值运算符具有从右到左
6、逗号运算符和逗号表达式:
逗号运算符:将两个表达式链接起来,逗号运算符他的优先级是最低的。
格式:表达式1,表达式2
求解过程:先求解表达式1的值,再求解表达式2的值,整个表达式的值是2的值
int a;
a = (145,68) //a的值为14
a = 3*5,a*4; //整个值是60,a的值变成了15