簡體   English   中英

v [i ++]在C中未定義嗎?

[英]Is v[i++] undefined in C?

我正在嘗試編寫一個通過char* a[]檢查a的函數,並且經常最終使用類似

if(a[i] == 'x'){
    i++;
    //...
}

現在,我真的想將其更改為a[i++] ,但是它似乎不起作用。

題:

我在這里做錯什么了嗎,還是有一個干凈的選擇來避免使用i++

注意:目前,函數中的13行中有3行是i++ ,這使它看起來比實際的要大得多。

if (a[i++] == 'x')本身在C語言中很好。但是,語義上有所不同:如果條件為true,則原始代碼只會遞增i ,而if (a[i++] == 'x')總是遞增i

如果v[i]未被定義並且i++不會導致有符號整數溢出,則v[i++]未被定義。

if(a[i++] == 'x'){
    ...
}

如果不等於

if(a[i] == 'x'){
    i++;
    ...
}

因為每次執行時前一個i都會被執行,但是僅當a[i] == 'x'為真時,后一個i才被執行。

++i是避免使用i++的替代方法。 請注意, ++i的值不同於i++ (++i)-1可能有用。

暫無
暫無

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

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