而哨兵变量与后递增运算符

时间:2019-05-01 06:17:23

标签: c pointers post-increment

两者之间有什么区别

while(*s++ != '\0') {}

while(*s != '\0') {
   s++;
}

schar *。后者工作正常。但在第一个循环结束时,*s不等于'\0'

1 个答案:

答案 0 :(得分:4)

如果是

 while(*s++ != '\0') {}

在条件检查语句本身中,增量是作为后增量运算符完成的。在这种情况下,值变化(增量)是对操作员进行值计算之后的副作用。因此,在使用该值(比较)之后,s会增加。

另一方面,

while(*s != '\0') {
   s++;
}

增量在条件块内作为后增量发生,仅在条件为TRUTHY时才会执行。一旦条件确定为假,s就不会递增。