簡體   English   中英

C中棘手的數組增量

[英]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;
}
if((c-- && ++b[1])|| b[0]++)

c--得出0 ,因此不評估++b[1]

這稱為短路評估

這里只是一些令人困惑的操作員用法。

  • c--是一個后綴遞減,因此在條件語句c中,在遞減之前,它會被評估為false(因為它是0 )。
  • 現在,由於&&短路並且僅在第一個條件為真時才評估第二個條件,因此我們不評估++b[1] ,而是根據b[0]++的真實性輸入條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM