[英]Tricky array increment in C
我不明白為什么在if語句++ b [1]等於1之前但是在if語句++ b [1]等於0之后。為什么++ b [1]在if語句內部不增加?
#include <stdio.h>
int main()
{
int c = 0;
int b[3] = {4};
printf("%d\n", ++b[1]); // return 1
b[1]--;
if((c-- && ++b[1])|| b[0]++)
{
printf("%d\n", b[1]); // return 0
printf("%d\n", c); // return -1
}
return 0;
}
這里只是一些令人困惑的操作員用法。
c--
是一個后綴遞減,因此在條件語句c
中,在遞減之前,它會被評估為false(因為它是0
)。 &&
短路並且僅在第一個條件為真時才評估第二個條件,因此我們不評估++b[1]
,而是根據b[0]++
的真實性輸入條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.