while 带有 post-increment 运算符的哨兵变量
while sentinel variable with post-increment operator
有什么区别:
while(*s++ != '[=11=]') {}
和
while(*s != '[=12=]') {
s++;
}
s
是一个 char *
。后者工作正常。但在第一个循环结束时,*s
不等于 '[=16=]'
.
如果
while(*s++ != '[=10=]') {}
递增是在条件检查语句本身中作为 post 递增运算符完成的。在这种情况下,值的变化(增量)是运算符计算值后的副作用。因此,在使用该值(相比之下)后,s
会递增。
另一方面,
while(*s != '[=11=]') {
s++;
}
增量发生在条件块内的post-增量,只有条件为真时才会执行。一旦条件被评估为假,s
就不会递增。
有什么区别:
while(*s++ != '[=11=]') {}
和
while(*s != '[=12=]') {
s++;
}
s
是一个 char *
。后者工作正常。但在第一个循环结束时,*s
不等于 '[=16=]'
.
如果
while(*s++ != '[=10=]') {}
递增是在条件检查语句本身中作为 post 递增运算符完成的。在这种情况下,值的变化(增量)是运算符计算值后的副作用。因此,在使用该值(相比之下)后,s
会递增。
另一方面,
while(*s != '[=11=]') {
s++;
}
增量发生在条件块内的post-增量,只有条件为真时才会执行。一旦条件被评估为假,s
就不会递增。