变量的定义;scanf 的使用;简单运算符
scanf变量数据类型
1.int 类型变量接收数据的时候
scanf("%d",&变量名);
2.float 类型变量接收数据的时候
scanf("%f",&变量名);
3.double 类型变量接收数据的时候
scanf("%lf",&变量名);
4.char 类型变量接收数据的时候
scanf("%c",&变量名);
scanf使用的注意细节
1. 变量名字:不要用abcde
2. int age = 0;
scanf("%d",&age);
后面不能加'\n';),而且变量名面前一定要有'&'
3. sacnf中的字符 一定要个变量的类型保持一致
4. scanf中的占位符是什么类型的 输入的额时候也要是什么类型的
在控制台中 无法限制用户的输入
使用scanf一次性接收多个数据
1. scanf中如果有多个占位符
1. 占位符之间什么都没有
以空格或者回车或者tab键为间隔
2. 占位符之间可以自定义的间隔符
输入的时候已响应的间隔符相隔
scanf缓冲区
1. scanf 并不是键盘上拿数据的 而是从他的缓冲区拿数据
2. 日过缓冲区有他想要的数据 直接拿走
3. 如果没有 等待用户输入
4. scanf中缓冲区拿走的数据的时候,
如果是给小数或者整数复制,会忽略回车,空格,tab键
例子:
<font color:"red">int num1 = 1;</font>
char num_c = 'a';
printf("请输入一个数字:\n");
scanf("%d",&num1);//90 回车
//在第二个scanf之前 只要我把缓冲区清空
rewind(stdin);//清空缓冲区中的所有玩意
printf("请输入一个字母:\n");
scanf("%c",&num_c);//
printf("%d---%c----\n",num1,num_c);
输出入的结果是: "100 ---- 换行 -----
解决方案:
在第二个scanf之前把缓冲区清空
只要在 第162行 调用一个API(API就是接口的意思) rewind(stdin);
关键字与标识符
标识符:是有命名规则和规范
规则:必须遵守的
1.标识符只能 数字 字母 下划线 和 $ 而且不能以数字开头
2.变量的区分大小写的 int age; int Age;
3.不能和关键字重名 int float = 10;
4.变量一定要在声明后使用
5.同一个大括号中不能定义相同名字的变量
数据类型的转换
显示转换(强制转换)
隐式转换(自动转换)
char 类型的隐式转换
举例:
char ch1 = 66; 用%c打印ch1的结果是 字母B
其实 字符 在内存中是以ascii码存在的 但是不需要去背
A的ASCII码是65 a的ASCII码是97
字符 本质上在内存中就是一个数字,是一个整数
交换两个变量的值
借助第三方变量
int num1 = 10; int num2 = 20; //int temp = num1; int temp = 0 temp = num1; num1 = num2; num2 = temp;
不借助第三方变量
int num1 = 10; int num2 = 20; num1 = num1 + num2;// 30 20 num2 = num1 - num2;// 30 10 num1 = num1 - num2;// 20 10
简单的算术运算符
1> 算术运算符
加:+
减:-
乘:*
除:/
模:%
2> 算数表达式
由算术运算符 链接起来的狮子就叫算是表达式
3> 其他的隐式转换
算是运算符的两边
日过类型不一样 那么辉县转成一样的
1. 准的方向 int--> float--> double
2. 只要有小数 都往double方向转
常见的复合赋值运算
int num = 10;
+= 比如: num += 10; --->等价于 num = num + 10;
-= 比如: num -= 10; --->等价于 num = num - 10;
/= 比如: num /= 10; --->等价于 num = num / 10;
%= 比如: num %= 10; --->等价于 num = num % 10;