当我运行此代码时,输​​出为1,2,3,0,但我不明白为什么?

时间:2015-12-06 07:34:01

标签: c

 Use AdventureWorks /* AdventureWorks 2014 DB*/

Select distinct(CommissionPct) from Sales.SalesPerson
order by CommissionPct desc OffSet 3 Rows Fetch next 1 Rows only

--This for 4Th highest value (N-1)

1 个答案:

答案 0 :(得分:3)

  1. sizeof(arr)/sizeof(int)返回arr中的元素数量,在这种情况下为4。
  2. n此处为34-1),因此如果i++ < n在评估此表达式之前i2或更少,则3为真,如果是i或更多,则为false。
  3. 如果在评估2之前i++ < n的值为i,则3在评估此表达式后会变为arr[3]
  4. 然后,p的地址存储到i
  5. 现在3i++ < narr[3]为false,循环结束。
  6. 由于0
  7. *p = 0;变为arr
  8. fun()的参数arr传递的内容是main()0的第一个元素的地址,因此它的第四个元素变为{{1} }}。
  9. 最后,打印arr的元素。