类型转换就是将A类型的变量赋值给B类型的变量
隐式类型转换
隐式转换(自动转换),就是从小范围到大范围的转换
#region 隐式类型转换
//隐式转换(自动转换),就是从小范围到大范围的转换
//sbyte<short<int<long
int i1 = 10;
long i2 = i1;
// short s1 = i1; 不允许 因为int存的多
//ulong ul1 = i1; 不允许 因为int存负数, ulong不能存负数
// ushort us1 = i1; 不允许 因为int存的多 ushort存的少 并且不能存负数
sbyte sbyte1 = 5;
//byte byte2 = sbyte1;不允许 因为sbyte 可以存负数 byte不能存负数
byte sbyte2 = 6;
// sbyte sbyte3 = sbyte2; 不允许 因为byte最大能存到255 sbyte只能存到127
ushort us2 = 21;//无符号
int int4 = us2; //可以转成有符号的int
uint us3 = us2;//可以转成无符号的int
short sh1 = 33; //有符号
int i3 = sh1; //可以转为有符号的int
//uint ui4 = sh1; 不能转为无符号的uint
//ulong ul4 = sh1; 不能转为无符号的ulong
/*
* 总结:
* 1.小范围能转大范围,大范围不能转小范围
* 2.同级别之间不能转换
* 3.无符号可以转换大范围的有符号和无符号
* 4.有符号可以转换大范围的有符号,不能转无符号
*/
//小数的转换
//float < double
float f1 = 2.2f;
double d1 = f1;
//整数可以直接转小数
ulong i6 = 3;
float f2 = i6;
double d2 = i6;
double d3 = 10.3;
//int i7 = d3; 不允许 因为整形不能保留小数位
//派生类 :子类 基类:父类 所有类型的基类都是object
//从派生类转为基类也可以转换
int i7 = 100;
char s = 'A';
object o1 = s;
#endregion
显示类型转换
从大范围到小范围的转换
#region 显示类型转换
//从大范围到小范围的转换
uint int1 = 20;
//在被转换的数据前面加上(目标类型) 进行显式转换
int int2 = (int)int1;
//强制转换可能会导致数据丢失
uint int3 = 256;
byte byte1 = (byte)int3;
Console.WriteLine(byte1);//0
double dou1 = 22.9;
int in4=(int) dou1;
Console.WriteLine(in4);
//并不是所有的显式转换都可以转换
string s1 = "吴亦凡";
// char c1 =(char)s1;
char c2 = 'C';
// string s2 = (string)c2;
//char类型int类型之间是根据ASCII码进行转换的
//A-Z == 65-90
https://blog.csdn.net/weixin_45788237/article/details/136460300?spm=1001.2014.3001.5501
int in5=(int)c2;
Console.WriteLine(in5);//67
int in6 = 67;
char c3 = (char)in6;
Console.WriteLine(c3);//C
#endregion
字符串和其他类型之间的转换
#region 字符串和其他类型之间的转换
//其他类型转字符串
int in1 = 123;
double do1 = 123.123;
bool b = true;
in1.ToString();// 123===>"123"
do1.ToString();//123.123===>"123.123"
b.ToString(); // true====> "true"
int num = 1008611;
Console.WriteLine(num.ToString());//1008611 ==> "1008611"
Console.WriteLine(num.ToString("F1"));//"1008611.0"
Console.WriteLine(num.ToString("F2"));//"1008611.00"
Console.WriteLine(num.ToString("n"));//1,008,611.00
Console.WriteLine(num.ToString("c"));//¥1,008,611.00
//......................
// 字符串转其他的类型
string st1 = "123";
int in7=int.Parse(st1);//"123"===> 123
string st2 = "123.123";
double dou2=double.Parse(st2);
Console.WriteLine(dou2);//"123.123"==>123.123
//in7=int.Parse("123.123"); 报错 因为123.123不是int类型
// in7=int.Parse("1a");
dou2 = double.Parse("123");
// 布尔值的转换 不区分大小写 但是单词之间不能有空格
bool b2 = bool.Parse("TRUE");
Console.WriteLine(b2);
#endregion
Covert
Covert类就是专门进行类型转换的类,Convert类提供的方法可以实现各种数据类型之间的转换
int i1 = 11;
byte by =Convert.ToByte(i1);
short sh = Convert.ToInt16(i1);
//Convert.ToByte() 转成byte
//Convert.ToInt16() 转成short
//Convert.ToUInt16() 转成ushort
//Convert.ToInt32() 转成int
//Convert.ToInt64() 转成long
//Convert.ToUInt64() 转成ulong
}
运算符
运算符:就是告诉编译器执行特定的数学逻辑操作的符号
表达式
表达式,是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合。约束变量在表达式中已被指定数值,而自由变量则可以在表达式之外另行指定数值。
表达式其实就是一个式子:a+b ,true && false 。
表达式也是值类型
算术运算符
+ - * / %
注意
-
两个整数 / ,得到的一定是整数(小数位前面的整数)
-
/和%中,a = 10/0; a = 10%0; 错误!!!
代码演示
Console.WriteLine(1+1);
int int1 = 2 + 3;
Console.WriteLine(int1);
Console.WriteLine(5-2);
Console.WriteLine(5*5);
//int和int运算 只能得到int
//2/4=(int)0.5 ===>0
int int2 = 2;
int int3 = 4;
Console.WriteLine(int2/int3);
Console.WriteLine((double)int2 / int3);
// % 取余
Console.WriteLine(5%2);
Console.WriteLine(10%3);
Console.WriteLine(7 % 4);
Console.WriteLine(17 % 4);
//0不能作为除数和取余的数
//Console.WriteLine(10/0);
//Console.WriteLine(10%0);
Console.WriteLine(2.2/0);//∞
Console.WriteLine(2.2%0);//NaN Not a Number 不是一个数字
/*
* 1.整数和整数运算,一定得到整数
* 2.整数和小数运算,可以得到小数
* 3.整数不能除以0,也不能对0取余
* 4.小数可以除以0,得到无穷大,对0取余得到NaN
*/
//+运算符 不仅可以用于数学运算,还可以用于字符串的拼接
string name = "吴亦凡";
int age = 20;
string sex = "男";
string info = name + "今年" + age + "岁,性别是" + sex;
Console.WriteLine(info);
//字符串和数值之间会进行拼接,不会进行数学运算
string info1 = name + "今年" + age+10 + "岁,性别是" + sex;
Console.WriteLine(info1);
string info2 = name + "今年" + (age + 10) + "岁,性别是" + sex;
Console.WriteLine(info2);
赋值运算符
=, +=,-=,*=,/=,%=
中间不能加空格,他们是一个整体
//= 表示赋值 一般用于变量或者属性的设置和修改
int i1 = 10;
People p1=new People();
p1.Name = "吴亦凡";
p1.Name = "罗志祥";
//i1 = i1 + 5;
i1 += 5;
Console.WriteLine(i1);
/*
* 当出现a=a+n的时候,就可以简写为a+=n
*
* i1=i1+5===>i1+=5;
* i1=i1-5===>i1-=5;
* i1=i1*5===>i1*=5;
* i1=i1/5===>i1/=5;
* i1=i1%5===>i1%=5;
*/
++ ,--
自加1,自减1
a = ++b, a= b++ 区别
-
++ 在变量后跟着,先赋值,在++(自加1)
-
++ 在变量前跟着,先++(自加1),再赋值,
--与++同理
//++ --
//自加1 自减1
//a++ ===> a=a+1;
//a-- ===> a=a-1
int a = 10;
int b = ++a;
Console.WriteLine(b);
Console.WriteLine(a);
int c = 11;
int d = c++; // d=11 c=12
int e = ++c; // c=13 e=13
int f = --c;// c=12 f=12
Console.WriteLine(d);//11
Console.WriteLine(e);//13
Console.WriteLine(f);//12
比较运算符(关系运算符)
<,>,<=,>=,==,!= 返回 bool类型
//关系运算符用于比较多个数值之间的关系,会得到一个布尔值
int aa = 3;
int bb = 5;
bool b1 = aa > bb;
b1 = aa < bb;
b1 = aa <= bb;
b1 = aa >= bb;
//= 表示赋值 ==表示比较两个数是否相等
b1 = aa == bb;
b1 = aa != bb;
Console.WriteLine(b1);
三目运算符
格式:比较表达式 ? 值1 : 值2; 比如:string info = a > b ? "值1" : "值2";
//格式:比较表达式? 值1 : 值2;
//比如:string info = a > b ? "值1" : "值2";
//执行逻辑:比较表达式的值如果为true,则返回值1,比较表达式的值为false,则返回值值2
int a2 = 10;
int b2 = 20;
Console.WriteLine(true?"吴亦凡":"罗志祥");
string name1 = a2>b2 ? "吴亦凡" : "罗志祥";
Console.WriteLine(name1);
//判断 是否成年
int age1 = 25;
string remark = age1 > 18 ? "成年" : "未成年";
//string remark = age1 < 18 ? "未成年" : "成年";
//判断三个数中的最大值
int in1 = 13, in2 = 5, in3 = 2;
//int max = in1 > in2 ? in1 : in2;
//max=max>in3 ? max : in3;
//三目运算符不仅可以写某个值,还可以写一个表达式
int max = in1 > in2
?
in1 > in3 ? in1 : in3
:
in2 > in3 ? in2 : in3;
Console.WriteLine(max);
逻辑运算符
-
&(与),|(或),&&(短路与),||(短路或),!(非)
//&(逻辑与运算) 表示 和 与 and 两边都为true 结果才为true,只要有一边为false,结果就为false
Console.WriteLine(true&true);
Console.WriteLine(true & false);
Console.WriteLine(false & false);
Console.WriteLine(1<2&10>11);
Console.WriteLine(11 < 2 & 10 > 11);
// |(逻辑或运算) 表示 或 or 两边只要有一个true 结果就为true
Console.WriteLine(true|true);
Console.WriteLine(false|true);
Console.WriteLine(false|false);
Console.WriteLine(1 < 2 | 10 > 11);
Console.WriteLine(11 < 2 | 10 > 11);
Console.WriteLine("----------------------------------------------");
// &&(短路与运算)
Console.WriteLine(true&&true);
Console.WriteLine(true && false);
Console.WriteLine(false && false);
Console.WriteLine(1 < 2 && 10 > 11);
Console.WriteLine(11 < 2 && 10 > 11);
// ||(短路或运算)
Console.WriteLine(true || true);
Console.WriteLine(false || true);
Console.WriteLine(false || false);
Console.WriteLine(1 < 2 || 10 > 11);
Console.WriteLine(11 < 2 || 10 > 11);
Console.WriteLine("----------------------------------------------");
/*
* && 和& ||和|的区别?
*
*
* 使用&&和||的时候,如果当前运算能得到最终的结果,后续的运算不会执行
* &和|总会执行完毕所有的运算
*
*/
//int num1 = 3,num2 = 4;
1.判断num1>num2 2.判断num1++==3 3.判断false&true 4.得到false
//bool bools = num1 > num2 & num1++ == 3;
//Console.WriteLine(bools);//False
//Console.WriteLine(num1);//4
//int num1 = 3, num2 = 4;
1.判断num1>num2 2.得到false
//bool bools = num1 > num2 && num1++ == 3;
//Console.WriteLine(bools);//False
//Console.WriteLine(num1);//3
//int num1 = 3, num2 = 4;
1.判断num1>num2 2.得到false
//bool bools = num1 < num2 | num1++ == 3;
//Console.WriteLine(bools);//True
//Console.WriteLine(num1);//4
int num1 = 3, num2 = 4;
//1.判断num1>num2 2.得到false
bool bools = num1 < num2 || num1++ == 3;
Console.WriteLine(bools);//True
Console.WriteLine(num1);//3
/*
*
* 总结:
*
* & 遇到一个false 最终结果就为false
* | 遇到一个true 最终结果就为true
* && 遇到一个false 就直接结束运算, 后续的代码不再执行(遇假则假)
* || 遇到一个true 接直接结束运算,后续的代码不再执行(遇真则真)
*/
//! 非 取反 true取反为false false取反为true
Console.WriteLine(!true);
Console.WriteLine(!(10>20));
数学运算
//Math C#内置的类, 类中定义了一些函数,用来帮助我们进行数学运算
//求绝对值
Console.WriteLine(Math.Abs(-33));
//四舍五入取整
Console.WriteLine(Math.Round(3.5));
//向下取整
Console.WriteLine(Math.Floor(3.9));
//向上取整
Console.WriteLine(Math.Ceiling(3.1));
//求最大值
Console.WriteLine(Math.Max(10,30));
//求最小值
Console.WriteLine(Math.Min(10, 30));
//幂运算
Console.WriteLine(Math.Pow(2,4)); //16 2*2*2*2
//开平方
Console.WriteLine(Math.Sqrt(9));
Console.WriteLine("---------------------------------");
//MaxValue 获取某个数值类型的最大值
Console.WriteLine(int.MaxValue);
Console.WriteLine(double.MaxValue);
//MinValue 获取某个数值类型的最小值
Console.WriteLine(int.MinValue);
Console.WriteLine(double.MinValue);
选择结构
if
注意语法结构:
-
单分支 if
-
双分支 if else
-
多分支 if else if else if 适合条件为判断同一变量的不同区间
格式: 单分支:if+tab if(条件){成立:执行代码}
双分支:if(条件){成立:执行代码1}else{不成立:执行代码2}
单分支和双分支
/*
* 1.单分支结构语法格式:
* if(布尔值或者布尔表达式){
* if()里面的布尔值或者布尔表达式的结果为true的时候,执行这里面的代码
* }
*/
if (123>11)
{
Console.WriteLine("执行");
}
//需求:判断用户是否成年
int age = 12;
if (age > 18)
{
Console.WriteLine("成年");
}
/*
* 2.双分支结构语法格式:
* if(布尔值或者布尔表达式){
* if()里面的布尔值或者布尔表达式的结果为true的时候,执行这里面的代码
* }else{
*
* if()里面的布尔值或者布尔表达式的结果为false的时候,执行这里面的代码
* }
*/
if (age > 18)
{
Console.WriteLine("成年");
}else {
Console.WriteLine("未成年");
}
多分支
格式: 多分支:if(条件){成立:执行代码1}elseif(条件){成立:执行代码2}……else{都不成立:执行代码n} 注意:1.判断条件是有递进关系 2.一旦一个分支执行了其他分支都不执行
/*
* 3.多分支结构语法格式:
* if(布尔值或者布尔表达式){
* if()里面的布尔值或者布尔表达式的结果为true的时候,执行这里面的代码
* }else if(布尔值或者布尔表达式){
* if()里面的布尔值或者布尔表达式的结果为true的时候,执行这里面的代码
* }else if(布尔值或者布尔表达式){
* if()里面的布尔值或者布尔表达式的结果为true的时候,执行这里面的代码
* ....
* }else{
* if()里面的布尔值或者布尔表达式的结果为false的时候,执行这里面的代码
* }
*/
//执行该过程:当某个条件语句成立,则执行后面的代码块,都不成立,则执行else后的代码块,
//注意:当多个条件都成立的时候,执行最上面的代码块,当前面的if()满足条件执行之后,后面的代码块就不再执行了
if (age<=12)
{
Console.WriteLine("儿童");
}else if (age<=18)
{
Console.WriteLine("青少年");
}else if (age <= 40)
{
Console.WriteLine("青年");
}
else if (age <= 50)
{
Console.WriteLine("壮年");
}else
{
Console.WriteLine("老年");
}
分支嵌套
//4. 分支嵌套
//if(0>age<123) 错误 比较运算符不能连用的
if (age>0&&age<134)
{
if (age <= 12)
{
Console.WriteLine("儿童");
}
else if (age <= 18)
{
Console.WriteLine("青少年");
}
else if (age <= 40)
{
Console.WriteLine("青年");
}
else if (age <= 50)
{
Console.WriteLine("壮年");
}
else
{
Console.WriteLine("老年");
}
}
else
{
Console.WriteLine("输入的年龄不合法");
}
多个if和ifelse的区别?
int aa = 10;
//if (aa>5)
//{
// Console.WriteLine("大于5");
//}
//else if(aa>6)
//{
// Console.WriteLine("大于6");
//}
if (aa > 5)
{
Console.WriteLine("大于5");
}
if (aa > 6)
{
Console.WriteLine("大于6");
}
//多个if和ifelse的区别:
//多个if是所有的if都判断,条件成立都会执行
//ifelse 是只要上面的满足条件,就不再对下面的elseif进行判断
标签:转换,num1,int,数据类型,WriteLine,Console,false,true
From: https://blog.csdn.net/2301_77297316/article/details/140878965