C#中的运算符优先级
是
(int)(int1 / (float)var2.Count() * 100)
相当于
(int)((int1 / (float)var2.Count()) * 100)
…它会使用浮点数还是整数除法?
编辑…如果上面的答案是肯定的,那么在这里执行浮点除法有什么好处?
/
和*
具有相同的运算符优先级,在§7.2.1下,因此两个结果应该相同(使用float
规则)。
但是,我不能为学习优先级表而烦恼; 我只是使用括号。 然后它可以使用任何语言,而无需记住它。
另一个重要的问题是最终(int)
演员的四舍五入:你是否期望这是“向上”,“向下”或“银行家”?
优先规则真的很难记住,所以我也更喜欢使用括号来消除歧义。 我尝试遵循建议“先为人们编写代码,然后再为计算机编写代码”。 但是,有一个有趣的助记符(我从Bruce Eckel的书中学到的)要记住(一些)规则:“ Ulcer Addicts真的很像CA很多 ”:
Ulcer - Unary (+, -, ++, --, !) Addicts - Arithmetic (and shift) (+, -, *, /, %, <<, >>) Really - Relational (<, >, ==, <=, >=, !=) Like - Logical (and bitwise) (&&, ||, &, |, ^) C - Conditional ( ? : ) <- this is the conditional ternary operator A lot - Assignment ( =, *=, +=, ...)
它并不完美,按位运算符被挤入,我们必须知道乘法运算符(*,/,%)优先于加法运算符(+, - )。
它们是等价的,它将使用浮点除法。 即使乘法首先发生,也会使用浮点除法,因为int除以float * int的结果,即浮点数。
编辑:
如果上面的答案是肯定的,那么在这里执行浮点除法有什么好处?
这是一个优势吗? 你要考虑的第一件事是它是否正确,因为结果会有所不同。 从代码判断,你似乎在试图计算一些百分比。 使用整数除法时,如果“int1”始终小于var2.Count(),则结果将始终为0,这可能不是您想要的。
我会说是的,除法和乘法应该是从左到右。 因此它是一个浮动部门。
PS:尽可能用double
替换float
。
请参阅C#语言规范: 运算符优先级和关联性 。
一样的。 两者都将使用浮动分割。
是的,都是等价的。
两者都将使用浮点除法。
整数除法只会给出答案的整个部分,即3/2将为1而浮点除法将给出1.5
上述就是C#学习教程:C#中的运算符优先级分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/998119.html