两者之间有什么区别
while(*s++ != '\0') {}
和
while(*s != '\0') {
s++;
}
s
是char *
。后者工作正常。但在第一个循环结束时,*s
不等于'\0'
。
答案 0 :(得分:4)
如果是
while(*s++ != '\0') {}
在条件检查语句本身中,增量是作为后增量运算符完成的。在这种情况下,值变化(增量)是对操作员进行值计算之后的副作用。因此,在使用该值(比较)之后,s
会增加。
另一方面,
while(*s != '\0') {
s++;
}
增量在条件块内作为后增量发生,仅在条件为TRUTHY时才会执行。一旦条件确定为假,s
就不会递增。