[英]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.