本帖最后由 黑骏马 于 2013-7-24 21:56 编辑
基础视频里老师讲
算术运算和赋值运算,操作数和结果的类型一致,不一致刚在满足条件时发生自动(隐式)转换。- int a = 10;
- int b = 3;
- double q = a/b;
- Console.WriteLine(q);
- Console.ReadKey();
复制代码 输出的结果是3 不是3.0或3.333333
看到黑马同学帕格尼尼的眼泪 的一个帖子后我查了下MSDN,关于自动转换是这么说的:
隐式转换
对于内置数值类型,如果要存储的值无需截断或四舍五入即可适应变量,则可以进行隐式转换。 例如,long类型的变量(8 字节整数)能够存储 int(在 32 位计算机上为 4 字节)可存储的任何值。 在下面的示例中,编译器先将右侧的值隐式转换为 long 类型,再将它赋给 bigNum。 - <span style="line-height: 1.5;">int num = 2147483647;</span>
- long bigNum = num;
复制代码 也就是double q = a/b; 编译器先把右侧a/b的值隐式转换为double类型,再将它赋给q ,
a/b的值是int型的3,转换为double应该是3.0,但为什么输入的还是3呢?
--------------------------------------
明白了,WriteLine()在输出double类型数据时会调用double的ToString()方法,于是3.0被标准化输出显示为3.
如有需要,可以使用控制符来控制输出格式。
{:soso_e183:}谢谢各位的回答!
|