Cur*_*ite -5 c# operator-precedence
我有一段简单的代码,没有达到我的预期.这段代码有什么问题?
int value1 = (int).5*100;
Run Code Online (Sandbox Code Playgroud)
这很容易,但通过我循环好一刻.当然,答案是微不足道的,已经知道了.但是,我认为有人思考可能会很有趣.
信用将给予第一个提出正确解决方案并解释原因的人.
Mar*_*ell 16
"有什么不对":括号的使用不足,迫使我背诵和背诵愚蠢的优先规则(这些规则旨在满足编译器,而不是人眼),使得难以编写甚至更难维护.
如果含义有点疑问,请添加括号.即使他们不需要.那么这不是问题.而且你不必记住任何东西!
如果代码写成:
((int)0.5)*100
Run Code Online (Sandbox Code Playgroud)
要么:
(int)(0.5*100)
Run Code Online (Sandbox Code Playgroud)
然后我怀疑这个问题是否必要:)
Zbi*_*iew 10
Firsty它投射.5到int,导致0,然后它乘以它100导致(0*100)0.
如果你希望它是50那么你需要使用括号(所以乘法首先,然后输入):
int value1 = (int)(.5*100);
Run Code Online (Sandbox Code Playgroud)
放置更多括号而不是更少的括号总是更好,它没有任何成本,它增加了可读性和理解.
MSDN Library:运算符优先级和关联性.
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |