五、数据类型转换

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _5.数据类型转换
{
    class Program
    {
        static void Main(string[] args)
        {
            // 隐式类型转换
            {
                ushort destinationVar;
                char sourceVar = ‘a‘;
                
                // 下面这条语句把char类型隐式转换成ushort类型。
                destinationVar = sourceVar;
                Console.WriteLine("sourceVar val: {0}", sourceVar);
                Console.WriteLine("destinationVar val: {0}", destinationVar);
            }
            
            // 显式类型转换
            {
                byte destinationVar;
                short sourceVar = 7;
                
                // 下面这条语句把short类型显式转换成byte类型。
                // 如果不强制类型转换,会出现编译错误。
                destinationVar = (byte)sourceVar;
                Console.WriteLine("sourceVar val: {0}", sourceVar);
                Console.WriteLine("destinationVar val: {0}", destinationVar);
            }
            
            // 表达式的溢出检查上下文
            {
                byte destinationVar;
                short sourceVar = 281;
                
                // byte类型的最大值255,所以此语句进行强制类型转换后会溢出。其结果为25
                destinationVar = (byte)sourceVar;
                // destinationVar = checked((byte)sourceVar); 
                // 上面这条语句进行溢出检查时,会出现OverflowException异常。
                // destinationVar = unchecked((byte)sourceVar); 
                // 上面这条语句表示不进行溢出检查和不加此溢出检,查结果是一样的。
                Console.WriteLine("sourceVar val: {0}", sourceVar);
                Console.WriteLine("destinationVar val: {0}", destinationVar);
            }
            
            // 使用Convert类方法进行转换
            {
                bool boolVal = true;
                double doubleVar = 99.999;
                string stringResult;
                string stringVal = "17";
                int integerVal = 67;
                long longResult;
                
                stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVar);
                Console.WriteLine("stringResult: {0}", stringResult);
                
                longResult = integerVal + Convert.ToInt64(stringVal);
                Console.WriteLine("longResult: {0}", longResult);
            }
            Console.ReadKey();
        }
    }
}

/**
 * 一、数据类型转换
 * 1. 基本概念
 * a) 不同类型的变量使用不同的模式来表示数据。
 * b) 它们占用的存储空间可能相同,也许目标类型有足够的存储空间包含所有的源数据位,结果也有可能与期望不同。
 * 
 * 2. 数据类型转换分类
 * 可分为隐式类型转换和显式类型转换。
 * 
 * 二、隐式类型转换
 * 1. 基本概念
 * 从类型A到类型B的转换可以在所有情况下进行,执行转换规则非常简单,可以让编译器执行转换。
 * 
 * 2. 隐式转换规则
 * 任何类型A,只要其取值范围完全包含在类型B的取值范围内,就可以进行隐式转换为类型B。
 * 
 * 3. 基本类型隐式转换表
 * 类型   可以安全转换为
 * byte   short,ushort,int,uint,long,ulong,float,double,decimal
 * sbyte  short,int,long,float,double,decimal
 * short  int,long,float,double,decimal
 * ushort int,uint,long,ulong,float,double,decimal
 * int    long,float,double,decimal
 * uint   long,ulong,float,double,decimal
 * long   float,double,decimal
 * ulong  float,double,decimal
 * float  double
 * char   ushort,int,uint,long,ulong,float,double,decimal
 * 
 * bool和string类型没有隐式转换。
 * 
 * 三、显式类型转换
 * 1. 基本概念
 * 从类型A到类型B的转换只能在某些情况下进行,转换规则比较复杂,应进行某种类型的处理。
 * 
 * 2. 转换规则
 * 强迫数据从一种类型转换为另一种类型。
 * 其语法为:
 *  <(destinationType)sourceVar>;
 *  此种转换只能在某种情况下才是可行的。彼此之间没有关系的类型或根本没有关系的类型不能进行强制转换。
 *  
 * 四、表达式的溢出检查上下文
 * 1. 简单检查源变量的值,把它与目标变量的取值范围进行比较。
 * 2. 迫使系统特别注意运行期间的转换。
 *  使用checked和unchecked关键字进行表达式的溢出检查上下文。
 *  其使用语法:
 *      checked(expression)     <检查表达式是否溢出,如出现溢出情况会抛出OverflowException异常>
 *      unchecked(expression)   <对表达式溢出情况不进行检查>
 *      
 * 五、使用Convert类进行显式转换
 * 1. 数值的有效表达方式
 * 首先是一个可选符号(加号或减号),然后是0位或多位数字,一个句点后跟一位或多位数字,接着是一个可选的e或E,
 * 后跟一个可选符号和一位或多位数字(在这个序列之前或之后)和空格。
 * 
 * 2. 转换方法
 * // 整数类型
 * Convert.ToByte(val)      val转换为byte
 * Convert.ToSByte(val)     val转换为sbyte
 * Convert.ToInt16(val)     val转换为short
 * Convert.ToUInt16(val)    val转换为ushort
 * Convert.ToInt32(val)     val转换为int
 * Convert.ToUInt32(val)    val转换为uint
 * Convert.ToInt64(val)     val转换为long
 * Convert.ToUInt64(val)    val转换为ulong
 * 
 * // 浮点类型
 * Convert.ToSingle(val)    val转换为float
 * Convert.ToDouble(val)    val转换为double
 * Convert.ToDecimal(val)   val转换为decimal
 * 
 * // 布尔类型
 * Convert.ToBoolean(val)   val转换为bool
 * 
 * // 字符类型
 * Convert.ToChar(val)      val转换为char
 * 
 * // 字符串类型
 * Convert.ToString(val)    val转换为string
 * 
 * 使用以上类型转换方式总是会进行溢出检查,checked和unchecked关键字不起作用。
 */
时间: 2024-08-06 03:38:31

五、数据类型转换的相关文章

Java从零开始学五(数据类型转换)

一.数据类型转换 分为“自动类型转换”和“强制类型转换” 二.自动类型转换 低级别------>高级别 byte b=7; int i=b; System.out.println("i= "+i); double d=i; System.out.println("d= "+d); double dw=5+5.6*4+'A'; System.out.println("dw="+dw); 结果: i= 7d= 7.0dw=92.4 三.强制类型

第三十五节,json数据类型转换字符串模块

在使用json模块时需要先 import json 引入模块 json.dumps()模块函数 功能:将Python数据类型转换成字符串[有参] 使用方法:json.dumps(要转换的数据类型变量) 格式如:json.dumps(yhxxi) #!/usr/bin/env python # -*- coding:utf8 -*- import json yhxxi = { #创建一个嵌套字典 1:{ "yonghu":"liguixiou", "mima

前端学习(27)~js学习(五): typeof和数据类型转换

变量的数据类型转换:将一种数据类型转换为另外一种数据类型. 通常有三种形式的类型转换: 转换为字符串类型 转换为数字型 转换为布尔型 typeof 运算符 typeof()表示“获取变量的数据类型”,返回的是小写,语法为:(两种写法都可以) // 写法1 typeof 变量; // 写法2 typeof(变量); typeof 这个运算符的返回结果就是变量的类型.那返回结果的类型是什么呢?是字符串. 返回结果: typeof 的代码写法 返回结果 typeof 数字 number typeof

2016.7.29 数据类型转换

js是弱类型语言,定义不像后台一样严格使用string.int.boolean等,而是直接一个var定义所有的对象. 玩数据类型转换之前,我们先讲讲各种数据的作用和形式. string     字符串 Number  数字 Boolean  布尔类型 NaN          数字类型,表示数字的空和错误 undefined 表示"缺少值",就是此处应该有一个值,但是还没有定义. undefined典型用法: (1)变量被声明了,但没有赋值时,就等于undefined. (2) 调用函

C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)

一.数值类型及其调用原理 名称 说明 所占字节 范围 byte 字节型 1 -27~27-1 short 短整型 2 -215~215-1 int 整型 4 -231~231-1 long 长整型 8 -263~263-1 char 字符型 1 0~65535 float 单精度型 4 ±1.5*10-45~±3.4*1038 double 双精度型 8 ±5.0*10-324~±1.7*10308 bool 布尔型 1 只有true和false两个值 static void Main(stri

标识符、八种基本数据类型、常量、变量、数据类型转换

一.标识符(用来标识变量名.函数名.数组名.类名的字符组合) 标识符的命名规则; 1.一般采用驼峰式的命名规则, 2.类名和接口名:首字母大写, 3.标识符首字母只能为字母._.$三种情况 4.除首字母外其他可为任意字符 5.标识符不能为关键字 二.八种基本数据类型和引用数据类型 基本数据类型 数值型:整型(byte,short,int,long);浮点型(float,double) 字符型(char) 布尔型(boolean): 引用数据类型 类(class) 接口(interface) 数组

Python基础之模块、数据类型及数据类型转换

一.模块 1.标准库 不需要安装,直接调入使用的模块. import sys模块: import sys print(sys.path) #打印环境变量绝对路径 print(sys.argv) #打印当前脚本相对路径 打印脚本第二个参数:print(sys.argv [2]) import os 模块: import os # cmd_res=os.system("dir") #只执行命令,不保存结果 cmd_res=os.popen("dir").read() #

17.2015.08.04第十八节课 C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)

一.数值类型及其调用原理 名称 说明 所占字节 范围 byte 字节型 1 -27~27-1 short 短整型 2 -215~215-1 int 整型 4 -231~231-1 long 长整型 8 -263~263-1 char 字符型 1 0~65535 float 单精度型 4 ±1.5*10-45~±3.4*1038 double 双精度型 8 ±5.0*10-324~±1.7*10308 bool 布尔型 1 只有true和false两个值 static void Main(stri

编程入门——工具初识、数据类型转换、数字类型

编程入门   零.引言 当我们学习一门语言时,最开始的是从一段代码开始,而书写和运行代码是从认识语言和使用工具展开.一个好的工具能对启蒙者有着寓意深远的影响.那么怎么界定一个好的工具选择呢? 一.工具初识 1.计算机语言:含义:指用于人与计算机之间的通讯语言. 计算机系统最大特征是指令通过一种语言传达给机器.为了使电子计算机进行各种工作,就需要有一套用以编写计算机程序的数字.字符.和语言规划,由这些字符和语法规则组成计算机指令(或各种语句).这些就是计算机能接受的语言.二进制是计算机使用的一种计