c#小灶——自动类型转换和强制类型转换

前面已经认识了不同的数据类型,你们有没有尝试过让不同的数据类型进行运算呢?

int a = 1;
double b = a;
Console.WriteLine(b);

运行结果是:1

我们把一个整型的变量赋值给了一个浮点型的变量,可以正常的输出,如果我们把一个浮点型的变量赋值给一个整型的变量呢?

double a = 1;
int b = a;
Console.WriteLine(b);

这样就会报错。

为什么呢?因为我们之前说过,变量就像一个容器,里面存放着变量的值。而数据类型就相当于容器的类型,决定了容器能够存放什么样的值。

试想,生活中我们把小盒子里的东西放进大盒子里,是没有问题的。数据类型也是这样。我们把整型的数据赋值给浮点型是可以放进去的,放进去之后里面的值1其实也就变成了浮点型,即1.0,不过c#输出的时候,很聪明的把后面的.0去掉了。

结论:占字节小的可以向占字节大的自动转换,但占字节大的不能向占字节小的自动转换。

这种数据类型的转换是自动完成的,所以叫做自动类型转换。

如果我偏要把字节大的赋值给字节小的怎么办呢?试想,生活中我们把大盒子中的东西装进小盒子,东西少还好,东西多了就只能装进去一部分了。现在我说,我不听我不听,我就是要把大盒子的东西装进小盒子。哭唧唧……

没办法,我们只能使用强制类型转换,即把占字节大的数据类型强制转换为占字节小的数据类型。

double a = 1.2;
int b = (int)a;
Console.WriteLine(b);

我们在引用变量a给b赋值时,在a前面加了个括号,就是把数据类型强制转换为括号里的数据类型。我们运行一下,结果是:1

a的值是1.2,强制类型转换赋值给了b之后就只剩1了,因为整型的没有小数部分,所以装不下了啊。

原文地址:https://www.cnblogs.com/hmswt/p/11362821.html

时间: 2024-10-27 14:39:38

c#小灶——自动类型转换和强制类型转换的相关文章

自动类型转换、强制类型转换、作用域、整型表数范围

一.变量的作用域 测试代码: public class Test1 { private static int value = 1; // 全局变量 private static int temp = 0; // 全局变量 public static void main(String[] args) { int value = 2; // 局域变量覆盖全局变量 System.out.println(value); // 输出的是局域变量,全局变量被屏蔽 System.out.println(tem

java的自动类型转换和强制类型转换

一.自动类型转换 在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换.例如: , 代码中 int 型变量 score1 可以直接为 double 型变量 score2 完成赋值操作,运行结果为: 82.0  这种转换称为自动类型转换. 当然自动类型转换是需要满足特定的条件的:目标类型大于元类型 二.强制类型转换 当程序中需要将 double 型变量的值赋给一个 int 型变量,该如何实现呢? 显然,这种转换是不会自动进行的!因为 int 型的存储范围比 double 型的小.

JAVA-初步认识-第二章-自动类型提升&强制类型转换

一. 深入理解变量 在之前的讲解中,我们谈论的都是定义不同类型的变量时要注意的问题.这一节中,我们将变量投入运算,探索在运算过程中,应该遵守的规则. 在这里对上一节<变量的基本演示>做一个小结,主要有三点.直接书写数字常量时,系统会给常量一个默认的类型,如int和double,当书写的常量赋值给定义好类型的变量时,就会产生错误.还有就是书写的常量和本身默认的类型起冲突.最后一点就是在书写源程序的过程中,一定要采用英文字符. 二. 变量的运算规则 运算的两端都是相同类型才可以,不然无法进行运算.

数据类型转换之强制类型转换

二.强制类型转换 1. 特点:代码需要进行特殊的格式处理,不能自动完成. 2. 规则:数据范围从大到小. 3. 格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据; 强制类型转换代码: 1 public class Demo02DataType { 2 public static void main(String[] args) { 3 // 左边是int类型,右边是long类型,不一样 4 // long --> int,不是从小到大 5 // 不能发生自动类型转换!

Java自动类型转换和强制类型转换

1.容量小的数据类型可以自动转成容量大的数据类型(注:容量大指的是数据类型表征的范围大.) 2.数据自动类型转换: cast:转型 long型可以自动转换成float但是可能丢失精度. int型转换为char型需要强制转型. 但是char型转成int是不需要强制转换. 3.表达式中类型提升问题.

9.Java数据类型转换(自动转换和强制转换)

数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换:强制类型转换则必须在代码中声明,转换顺序不受限制. 自动数据类型转换 自动转换按从低到高的顺序转换.不同类型数据间的优先关系如下:     低--------------------------------------------->高     byte,short,char-> int -> long -> float -> do

多用as少用强制类型转换

在 C# 中存在一个名叫静态类型检查的机制,这个机制可以让编译器帮助我们把类型不服的用法找出来,从而使得应用程序在运行期间加少一些类型检查的操作.但是有时候我们还是需要进行运行期类型检查,比如我们在设计框架时将方法的参数类型定义为 object ,那么这时我们就有很大的可能需要将 object 类型的参数先转换为其他类型.我们进行转换时会有两种方法可以使用:一种是强制类型转换,这种方法可以绕过编译器的类型检查,另一种是先通过 is 判断操作是否合理,是否可以转换,然后再使用 as 运算符进行转换

Java初学者:基本数据类型的强制类型转换

前文书我们讲到了基本的输入输出,今天我们再回到基本的数据类型那里,但是我们不会赘述之前的内容,我们今天讲一讲下强制类型转换. 首先我们需要明确一下概念,明确一下什么叫作强制类型转换,强制类型转换就是以强制的手段把一个数据类型的数据转换成其他数据类型的数据. 举个例子,假设我们有个整型数据9,我们要强制把它转换成浮点型数据,我们知道,如果不考虑取值范围的话,浮点型数据就是数学里面的小数,大家觉得转换以后会怎么样呢?这不难猜测,应该会变成9.0,事实也是如此.再比如,我们有个浮点型数据6.7,如果我

Java 自动转换和强制转换

/** * 自动类型转换和强制类型转换 * */ public class Demo1 { public static void main(String[] args) { //自动类型转换 short s =1; int i; i=s; System.out.println("i="+i); //强制类型转换 double a=1.22233; float b; b= (float)a; System.out.println("b="+b); } } 原文地址:h