Tag: operator precedence

int arr = {0}; int value = arr ++]; 值= 1?

今天我来了Eric Lippert的一篇文章,他试图清除运营商优先级和评估顺序之间的神话。 最后有两个代码片段让我困惑,这是第一个片段: int[] arr = {0}; int value = arr[arr[0]++]; 现在,当我考虑变量值的值时,我只是将其计算为1。 这就是我认为它的工作方式。 首先将arr声明为int数组,其中包含一个项目; 这个项目的值是0。 在这种情况下,第二个得到arr [0] –0的值。 第三个得到arr的值[步骤2的值](仍为0) – 再次设置arr [0] – 仍然为0。 第四步将步骤3(0)的值赋给变量值。 –value = 0现在 添加到步骤2的值1 – 现在arr [0] = 1。 显然这是错误的。 我试图在c#规范中搜索关于何时实际发生增量的一些明确陈述,但没有找到任何增量。 第二个片段来自Eric关于该主题的博客文章的评论: int[] data = { 11, 22, 33 }; int i = 1; data[i++] = data[i] + 5; 现在这是我认为该程序将执行的方式 […]

C#中的运算符优先级

是 (int)(int1 / (float)var2.Count() * 100) 相当于 (int)((int1 / (float)var2.Count()) * 100) …它会使用浮点数还是整数除法? 编辑…如果上面的答案是肯定的,那么在这里执行浮点除法有什么好处?