string[] args) var x = new Program(); }令我惊讶的是,这会输出47;换句话说,即使强制转换为decimal,也会调用explicit operator long。C#规范中有没有明确说明应该发生这种情况(如果是,具体发生在哪里),或者这是我遗漏的其他规则的结果吗?
在凯西·塞拉的SCJP指南一书中,在作业一章中,我们了解到我们可以声明类似这样的byte b = 7;。幕后的代码是byte b = (byte) 7;。这是因为在java中,数字7被认为是一个文字int值,所以必须强制转换为int。
现在是另一种情况。Double可以包含浮点值中包含的每个字节,因为它是一个更大的数据类型。所以我们可以说float f = 10.543;,因为10.543是一个相当小的值,应该可以放在一个浮点数中。同样,这样的