IOS学习第3天
数据类型的转换
注意点:为变量赋值的时候,赋值的数据的类型必须要和变量的类型一致,否则就会出现问题
- 数据的自动类型转换
当我们为变量赋值的时候,如富赋值的数据的类型和变量的类型不一致.这个时候C系统会将赋值的数据类型转换为变量的类型,然后再赋值,这样的情况叫做自动类型转换.
ASCII码值
‘A’:65
‘a’:97
‘0’:48
当为char变量赋值的时候,可以直接赋值ASCII码
当我们为char变量赋值1个整数的时候,气势赋值的是以这个整数位ASCII码所对应的字符数据
scanf函数
作用:可以在程序运行的时候,让用户自己输入数据,然后将用户输入的数据赋值给指定的变量
格式:scanf(“格式控制符”,变量地址);
例子:
int num,num1;
scanf("%d-%d",&num,&num1);
不能添加\n换行符
输入数据的时候要按照其规定的格式
scanf函数原理
当CPU执行到scanf这个函数的时候,CPU执行就会暂停,不会继续执行下去了,并等待用户输入数据,当用户输入完毕数据,按下回车表示输入完毕,这个时候,就会将用户输入的数据复制给后面指定的变量
- scanf函数的缓冲区
在执行scanf函数的时候,会让用户输入一个数据,数据输入完毕之后,并不是将这个数据直接赋值给变量,二十先将数据存储在缓冲区,输入的任何数据都会存储在缓冲区中,当需要给某个变量赋值的时候,会先去缓冲区里查找有没有数据,如果没有才会在控制台要求用户输入数据
缓冲区总结
1.当从缓冲区中拿数据的时候,如果要拿的数据的类型是整形或实型,遇到空格、回车、Tab键就会被自动忽略,继续往下拿
2.当从缓冲区拿数据的时候,如果要拿的数据的类型是字符型,不会忽略任何数据
解决方法
rewind(stdin);这句话的作用是将缓冲区的数据全部清空
- 交换两个变量的值
方法一:再声明一个临时变量
int num1,num2,temp;
num1 = 10, num2 = 15,temp = 0;
temp = num1;
num1 = num2;
num2 = temp;
方法二:利用算术运算
int num1,num2;
num 1 = 10,num 2 = 15;
num 1 = num1 + num2;
num 2 = num1 - num2;
num 1 = num1 - num2;
方法三:利用异或运算
表达式 | 结果 |
---|---|
X^X | 0 |
X^0 | X |
X^Y^Z | X^(Y^Z) |
X^Y | Y^X |
int num,num2;
num 1 = 10;num 2 = 15;
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
算术表达式
一般情况下,我们要求要处理表达式的结果.处理方式为:将表达式的结果通过赋值符号存在一个变量中
算术运算符 | 作用 |
---|---|
+ | 加号 |
- | 减号 |
* | 乘号 |
/ | 除号 |
% | 取余 |
= | 赋值 |
注意点
1.如果参与算术表达式的操作数的类型都是一致的,那么算术表达式的及结果的类型就是这个类型
2.如果将double类型的数据赋值给float类型的变量,会丢失精度
3.当算术表达式中的运算数据不同时,运算的结果会是精度更高的那种类型
算术运算符的优先级和char数据参与算术运算
- 原理
先乘除模,再加减,如果同级别,就从左到右依次计算.使用小括号可以改变运算的优先级.如果有小括号,就先算小括号里的.
- char数据参与算术运算符
char类型的数据也可以参与算术运算
当算术表达式中的操作数是一个char数据的时候,会先将这个char数据转换为相对应的ASCII码值,然后再进行运算.
- 赋值运算
表达式 | 含义 |
---|---|
num += a | num = num + a |
num -= a | num = num - a |
num *= a | num = num * a |
num /= a | num = num / a |
num %= a | num = num % a |
变量的命名规则以及规范
- 变量的名称是由程序自己定的,不能随便定义,一定要有意义并且符合一些规则和规范
- 变量名只能由任意的字母,下划线和$以及数字组成,注意不能用数字开头
- 是区分大小写的 age Age AGE
- 变量一定要先定义再使用
- 同一个大括号中不能定义名字相同的变量
- 不能喝C的关键字同名
- 命名要有意义