C语言补充知识点——数据录入
#include<stdio.h>
int main() {
/*
定义两个整数类型的变量 num1 和 num2,键盘录入数据分别为两个变量赋值
求两个数的和并进行打印
*/
// 1.定义两个变量
int num1;
int num2;
// 2.键盘录入多个数据
printf("请输入两个整数:\n");
scanf_s("%d %d",&num1,&num2);
// 1012320
// 3.相加并输出
printf("----------------------------------\n");
printf("第一个输入的数字为: %d\n", num1);
printf("第二个输入的数字为: %d\n", num2);
printf("两数之和为 %d\n", num1+num2);
printf("----------------------------------\n");
return 0;
}
实例练习
数值拆分
- 需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台上
- 运行结果
请输入整数:
123
个位数是: 3
十位数是: 2
个位数是: 1
解决方案:
- 示例:123
123除以10商12余312除以10商1余2
#include<stdio.h>
int main() {
// 1.键盘录入一个三位数
printf("请输入一个三位数: \n");
int num;
scanf_s("%d", &num);
// 2.拆分
int splitOne = num % 10;
int splitTen = num / 10 % 10;
int splitHundred = num / 100 % 10;
// 3.逐个打印
printf("这个数的个位数是:%d\n", splitOne);
printf("这个数的十位数是:%d\n", splitTen);
printf("这个数的百位数是:%d\n", splitHundred);
return 0;
}
最核心的方法就是取余的应用
- 个位数:数值 %
10 - 十位数:数值 /
10%10 - 百位数:数值 /
100%10 - 千位数:数值 /
100%10
隐式转换和强制转换
❓ 什么是隐式转换 把一个取值范围小的,转换成取值范围大的
short a = 10;
int b = a;
❓c = a + b
// 1. double c = a + b
-----------------------------------------
short:0000 0000 0000 0000
int:0000 0000 0000 0000 0000 0000 0000 0000
-----------------------------------------
由于数据大小的不同,所占用的内存字节也会发生转换
⭕规则1:取值范围小的和取值范围大的计算,小的会自动提升为大的,再进行计算
⭕规则2:short char 类型的数据在运算的时候,先提升为 int,再进行计算
🫀隐式转换小结:
⚪ 取值范围: char > short > int > long > float > double
⚪什么时候转换❓
不同的数据类型进行计算、赋值等操作的时候,会触发隐式转换
⭕规则1:取值范围小的和取值范围大的计算,小的会自动提升为大的,再进行计算
⭕规则2:short char 类型的数据在运算的时候,先提升为 int,再进行计算
练习 🐅
// 请问最终的运算数据类型结果式什么类型的?
1-
short b1 = 10;
short b2 = 20;
数据类型 result = b1 + b2;
----> int
2-
int i = 10;
long n = 100L;
double d = 20.0;
数据类型 result = i + n + d;
----> double
3-
short b = 10;
long s = 20L;
long long n = 100LL;
数据类型 result = b + s + n;
----> long long
❓ 什么是强制转换 把一个取值范围大的,转换成取值范围小的
格式:目标数据类型 = 变量名 = (目标数据类型)被强制转的数据
int a = 10;
short i = short(a);
❓
-----------------------------------------
int:0000 0000 0000 0000 0000 0000 0000 0000
short:0000 0000 0000 0000
-----------------------------------------
由于数据大小的不同,所占用的内存字节也会发生转换
🫀强制转换小结:
⚪ 取值范围: char < short < int < long < float < double
⚪什么时候转换❓
大的数据赋值给小的时候,需要强制转换
⭕格式:想要转换成为什么类型,就在前面的小括号中写什么类型即可。
short i = short(a);
⭕强制转换的弊端: 有可能导致数据错误
练习 🐅
// 请问最终的运算数据类型结果式什么类型的?
//04_operator_demo4.c
#include<stdio.h>
int main() {
// 隐式转换:short 类型的数据在参与计算时候,提什为int
short s1 = 10;
short s2 = 20;
// 第一种:错误写法
//short result = s1 + s2;
//printf("%zu\n", sizeof((short)s1 + s2));
// 第二种:正确写法
short result = (short)(s1 + s2);
printf("%d\n", result);
return 0;
}
- 第一种结果
- 第二种结果