Day05_接受用户输入_基础符号_类型转换
主要内容
- 接受用户输入
- 转义符
- 算数运算符
- 类型转换
接受用户输入
- 新函数:
string str = Console.ReadLine();
- 注意: string 可以存储所有的类型, 且要求必须用string来接受
转义符
- 转义符是指一个由一个反斜杠("\")和一个特殊字符组成的一个具有特殊意义的字符
反斜杠后的字符 | 效果 |
---|---|
n | 换行 |
\r\n | windows系统换行 |
" | 表示双引号 |
t | 等距空格(相当于按Tab键), 多用于排版 |
b | 相当于退格键, 删除前面的一个字符; 但是放在字符串的最前和最后是没有用的 |
\\ | 单纯表示一个\ |
-
注意: \n只能在控制台,Winform和苹果系统中起到作用
若要让windows(比如文本框)识别, 需要使用 \r\n -
补充: \起到转义作用时不被视作字符
要让\在字符串中不起到转义的作用, 就在字符串的最前面紧接一个"@“符号
char chara = ‘/b’
string path = @“D:\path\a\b\c\d\p.avi”
- “@“的作用
- 取消\在字符串中的转义作用
- 将字符串按照编辑的原格式输出
算数运算符
符号 | 名称 | 举例 |
---|---|---|
+ | 加 | 10+3=>13 |
- | 减 | 10-3=>7 |
* | 乘 | 10*3=>30 |
/ | 除 | 10/3=>$3.\dot3$(要看result变量的类型) |
% | 取余 | 10/3=>1 |
类型转换
- “=“作为赋值运算符, 等号两端数据类型必须一致
但是, 即便不同也可能不会报错 - 如果不一致, 当满足下列条件时, 会发生自动类型转换(亦称隐式类型转换)
- 数据类型兼容, 例如 int和double
- 目标类型大于源类型, int$\rightarrow$double
如果是int$\rightarrow$double称为自动/隐式类型转换
如果是double$\rightarrow$int称为强制/现式类型转换
- 强制类型转换
- 条件:
- 两者相兼容
- 目标类型小于源类型
- 语法: (目标类型)要转换的值
double d = 2.33;
int n = (int)d;
补充
- 整数类型之间的运算的结果全部都是整数类型
- 注意: 如果操作数中存在一个double类型, 则整个运算表达式就被提升为double类型
注意一下这些例子的区别
int n1 = 10;
int n2 = 3;
double ans = n1 / n2;
//3
double ans = n1 * 1.0 / n2;
//此时出现一个double操作数
//3.333
double ans = n1 / n2 * 1.0;
//实际上被视作了:
//double ans = (n1 / n2) * 1.0;
//也就是1.0作为一个普通数字投入运算, 由于前面是int, 自动适配类型为int
//3
double ans = n1 / n2 * 1.2;
//实际上被视作了:
//double ans = (n1 / n2) * 1.2;
//此时1.2显然是double, 因此运算式被提升了
//3.599996
double ans = n1 / (n2 * 1.0);
//3.3333
小知识
- 若要使输出保留特定位数的小数点, 则使用以下语法:
Console.WriteLine("变量ans1保留小数点后三位的输出结果为: {0:0.000}\n同理,四位的话是这样表示: {1:0.0000}", ans1, ans2);
小练习
- 计算几天(46天)是第几周零几天
- 107653秒是几天几小时几分钟几秒
- 可以改为让用户输入
我的答案
int days = 46;
int day = days % 7;
int week = days / 7;
Console.WriteLine("结果是:\n第{0}周\n第{1}天", week, day);
Console.ReadKey();
int time = 107653;
int day = time / (3600 * 24);
int hour = time % (3600 * 24) / 3600;
int minute = time % 3600 / 60;
int second = time % 60;
Console.WriteLine("结果是:\n{0}天\n{1}小时\n{2}分钟\n{3}秒", day, hour, minute, second);
Console.ReadKey();