gri*_*ime 1 c printf scope operator-precedence
那么对于两个独立的代码片段,为什么递增器/递减器的行为不同?
片段A:
i=7; j=8; k=9;
printf("%d\n", i - 7 && j++ > k);
printf("%d %d %d", i, j, k);
Run Code Online (Sandbox Code Playgroud)
将产生以下输出:
0
7 8 9
Run Code Online (Sandbox Code Playgroud)
片段B:
while (i > 0)
printf("T minus %d and counting\n",i--);
Run Code Online (Sandbox Code Playgroud)
产生这个:
T minus 5 and counting
T minus 4 and counting
T minus 3 and counting
T minus 2 and counting
T minus 1 and counting
Run Code Online (Sandbox Code Playgroud)
现在,我知道函数的参数是通过值传递的,并且它必须与j
布尔表达式中使用的事实有关.但这两种情况似乎与我相矛盾.这里发生了什么?
好吧,你要需要看非常的运营商优先级如何排列紧密和准确它们如何工作.由于这是作业,我不打算给出确切的答案,但你应该做两件事.
&&
.特别是,何时j++ > k
执行子表达式?