Day03 笔记
3,变量类型转换
为一个变量赋值的时候,赋值的数据的类型必须要个变量的类型一致。
如果不一致,也可以编译链接执行,
这时就会讲数据的类型转换为变量的类型然后再赋值。
例如:int num = 2200000000;
先会把2200000000转换为int类型的变量,然后再赋值。
4,自动类型转换
1),为int类型变量赋值的时候,如果赋值整数不在int范围内,转换为int数据。
2147483648=-2147483648
为int类型变量赋值的时候,如果赋值的整数太大,编译直接报错。
为int类型变量复制的时候,给的是浮点型数据,直接取整数部分,会丢失精度。
2),为float变量赋值的时候,如果赋值的数据是一个double类型的
会自动转换为float类型
为float变量复制的时候,如果赋值的数据是整数,会将整数转换为单精度浮点数。
3),为double变量赋值的时候,。。。。。。
4),为char变量赋值的时候,如果单引号中有多个字符,就会取最后一个字符。
为char变量赋值的时候,如果赋值的是整数,会将整数按ASCII码表转换成char
‘a’ : 97 ‘0’ :48 ‘A’ = 65 ;
5,强制类型转换
int num = (int) d1 ;
显示的指令要讲数据转换成什么类型的。
6, 用何种类型保存
看是否有可能取值为小数
1),如果可能的取值只为整数,应用int
2),如果可能有小数,有效位不超过7位,用float
3),如果小数可能超过7位,用double
4),如果只可能是单个字符,用char
double 比 float 在内存中占用的空间大
model 型号 price 价格 weight 重量
7,scanf 函数
语法:scanf(“格式控制字符串”,变量地址列表);
简单实用步骤
a,在格式控制字符中使用占位符来限定用户输入的数据的类型
b,将用户的数据存储到后面的变量的地址中。
例如:int sum = 0;
Scanf(“%d”,&sum);
执行原理:
scanf函数是一个阻塞式的函数,当CPU在执行这句代码的时候,CPU的执行会暂停
等待用户输入,在输入完毕按下回车以后,继续执行。
使用scanf的步骤:
1),确定想要让用户输入什么类型的数据
2),声明一个对应类型的变量 准备用来存储用户的输入数据
3),使用scanf函数来接受输入,使用占位符,和变量地址。
8,scanf函数的高级使用
1),当要求用户输入一个数的时候,用户在输入的时候,输入的空格键,回车键,
tab键会自动忽略,知道输入一个数病回车结束才会继续执行。
2),scanf一次接受用户输入的多个数据,
scanf(“%d%d%d”,&a,&b,&c);
多个数据可以用回车和空格来分隔
注意当数和字符在一起混合输入的时候,会出问题。
3),自定义用户输入数据的分隔符
%d-%d-%d 但是用了其他的分隔符以后,不能再用空格和回车分隔。
9,scanf的缓冲区
1),当使用Scanf函数接受用户输入数据的时候,
会先将用户的输入的数据存储到缓冲区之中,
输入的全部的数据都会存储到缓冲区之中。
2),当执行Scanf函数的时候,会先检查缓冲区中是否有数据,
如果有想要的,不会让用户输入,如果没有才会让用户输入
3),当从缓冲区中那数据的时候,
如果要拿的是一个数,会自动忽略空格 回车 tab
如果scanf函数要拿的是字符数据,不会忽略任何缓冲区中的数据
要想让字符数据成功让scanf拿到
需要清空缓冲区
rewind(stdin);
10,交换两个变量的值
1),中间变量
temp = a;
a = b;
b = temp;
2),相加减
a = a + b;
b = a - b;
a = a - b;
11,算术运算符和算术表达式
1),算术运算符+-*/%(取余,不能用于小数)
2),算术表达式:表达式都有一个结果,我们要处理这个结果才有意义。
通过赋值符号来处理结果。
12,算术表达式的结果类型
只有知道类型才能定义一个对应类型变量来保存
如果参与算术表达式的数据类型一致,那么结果就是这个类型
如果不一致,结果就是范围最大的那个
int < float < double
13,算术运算符的优先级和案例
先* / 后+ - 可以用括号改变
14,char类型数据参加
char类型参加算术运算时,
会将char类型变量的ASCII码拿出来运算
15,符合赋值运算符
+= —= *= /= %=
num += 5 : num = num + 5;
16,自增自减
++ - -
前置:先加1 后运算
后置:先运算 后加1
自增自减 的优先级 高于算术运算符
|
|