首页 > 其他分享 >数据类型的转换

数据类型的转换

时间:2024-08-02 19:54:13浏览次数:17  
标签:转换 num1 int 数据类型 WriteLine Console false true

类型转换就是将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 。

表达式也是值类型

算术运算符

+ - * / %

注意

  1. 两个整数 / ,得到的一定是整数(小数位前面的整数)

  2. /和%中,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)

  2. ++ 在变量前跟着,先++(自加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

相关文章

  • c语言结构体的概述,定义结构体变量类型的方法,结构体变量的引用,结构体变量的初始化,结构
    1.C语言结构体的概述在C语言中,结构体(struct)是一种复合数据类型,用于将不同类型的数据组合在一起。它可以包含基本数据类型(如int、float、char等)以及其他结构体。结构体非常适合表示具有多种属性的复杂数据,如学生信息(包含姓名、年龄、成绩等)或坐标点(包含x和y坐标)。结构......
  • 无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为
    原文链接:https://blog.csdn.net/Castlehe/article/details/1243806481.错误原因安装了多版本的Office安装过WPS后没正常卸载2.解决方式2.1office多版本问题导致的以下四个操作基本覆盖常见原因了,可以从2.1.1尝试,每尝试一种,就去试一下看问题解决了没有,如果已经解决了,其他操作就......
  • JS之File对象与base64字符串之间的相互转换
    File对象有两种形态,在请求时为:控制台输出为:从formData中获得fileList对应的File对象,并转换为base64字符串,再转换回File对象,代码示例如下:constfileList=uploadFormData.get("fileList");console.log(fileList);constreader=newFileReader();reader.readAsDataURL(......
  • Qt C++ 调用 Python 之 PyObject* 数据类型转换
    整数:PyLong_FromLong和PyLong_AsLong类型检查函数:PyLong_Check()intcppInt=42;//C++整数转换为Python整数对象PyObject*pyInt=PyLong_FromLong(cppInt);//Python整数对象转换为C++整数longcppIntFromPy=PyLong_AsLong(pyInt);Py_DECREF(pyInt)......
  • java的数据类型之基本类型
    强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后使用。如果没有按照指定要求使用变量,则该变量将报错。java就是强类型语言。java的两大数据类型1.基本类型2.引用类型其中基本类型分为八小种按照图示内容了解各个类型的字节范围(若超过该范围,则IDEA会报错)1......
  • SAP ABAP 基础与入门(一、数据类型定义与字符串处理)
    1.   基础1.1.  基本数据类型C、N、D、T、I、F、P、X、string、XstringP:默认为8字节,最大允许16字节。最大整数位:16*2=32-1=31-14(允许最大小数位数)=17位整数位类型最大长度(字符数)默认长度说明C1~262143个字符1 字符普通字符(常用于名称、备......
  • 数据类型之间的优先级
    数据类型之间的优先级在Java中,数据类型确实有优先级和大小的概念。这主要影响运算时的类型提升规则,以及在进行类型转换时的规则。以下是Java基本数据类型的大小和优先级:大小byte:8位,-128到127short:16位,-32,768到32,767int:32位,-2^31到2^31-1long:64位,-2^63到2^63-......
  • 数据类型之间的强制性转换
    数据类型之间的强制性转换在Java中,数据类型之间的转换主要分为两种:自动类型转换(也称为隐式类型转换)和强制类型转换(也称为显式类型转换)。自动类型转换通常发生在更宽泛的数据类型向更狭窄的数据类型转换时,而强制类型转换则需要程序员显式地进行。自动类型转换(隐式类型转换)自动......
  • 数据类型
    数据类型Java是一种静态类型语言,这意味着每个变量在使用前必须声明其数据类型。Java的数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型基本数据类型是Java语言预定义的,用于存储原始数据的类型。Java有8种基本数据类型:整型:byte:8位有符号整数,取值范围......
  • 数据类型的转换
    数据类型的转换1.隐式类型转换(自动类型转换)隐式类型转换发生在两种情况下:赋值时的转换:当将一个值赋给另一个变量时,如果两个变量的数据类型不兼容,但目标类型的范围能够包含源类型的所有值,则编译器会自动将源类型的值转换为目标类型。例如,在Java中,将int类型的值赋给long类型的变......