我希望下面的循環增加指針,直到遇到空終止字符。儘管如此,它無法正常工作。這個循環是如何工作的?
while (*s++ != '\0')
;
這一個作用:
while (*s != '\0')
s++;
我似乎無法瞭解什麼是兩者之間的區別。
這個問題涉及練習5.3的The C Programming Language
一書。
我希望下面的循環增加指針,直到遇到空終止字符。儘管如此,它無法正常工作。這個循環是如何工作的?
while (*s++ != '\0')
;
這一個作用:
while (*s != '\0')
s++;
我似乎無法瞭解什麼是兩者之間的區別。
這個問題涉及練習5.3的The C Programming Language
一書。
區別在於循環後指針的狀態。
在第一個示例中,您在0字符之後指向一個字符,而在第二個示例中您指向0字符。
提示:在兩種情況下發生++
時,什麼時候不是?特別是在最後一次循環運行?
讓我們看看:在最後一次循環運行中,評估()
之間的表達式。
在第一個例子中,這意味着++
被執行,在NUL
字節之後具有s
點。
在第二個示例中,()
中沒有++
,並且循環體不再執行。所以++
沒有發生,有s
指向NUL
字節。
while (*s++ != '\0')
;
上面的語句將增加s
是否(*s++ != '\0')
收益或真或假的值。如果錯誤,它也會增加它,但它會反彈出循環。
while (*s != '\0')
s++;
上面的語句將不會增加s
如果(*s != '\0')
返回false的值,然後終止循環,使使*s
仍保持指向'\0'
。
「++」是一個增量運算符,其功能非常類似於「s + = 1」或「s = s + 1」,但++確實將s增加1,運算符的位置將影響結果。以下觀察:
int x;
int y;
// Increment operators
x = 1;
y = ++x; // x is now 2, y is also 2
y = x++; // x is now 3, y is 2
的區別在於是否要增加值要設置「預」(之前)或交(後)評價(價值的檢索)。
'++'會在評估後增加值*。 – bzeaman 2014-12-05 15:05:19