while(*string!='\0')string++;
为什么不可以写成while(*string++!='\0');
int main()
{
char s[] = "123";
char *string = &s[0];
//while(*string!='\0') string++;
while(*string++!='\0');
}
两个写法都是可以的。参考如上程序。
当然,极力不推荐这么写。
因为当执行while进行判断的时候,要将括号里面的所有逻辑执行完以后才开始执行下面的语句。例如string初始值为1,第一中方式执行完整个while语句后,string再++,然后再判断当string为2的时候,去执行while的整个语句,如此循环。第二种方式第一次执行while判断逻辑后,string值就已经为2了,也就是string初始值为1,没有执行。
这个问题比较有意思。
我认为,第二种方法会比第一种方法多执行一次,第一种方法当循环结束时,string指向的字符是'\0',第二种方式循环结束时,指向的是'\0'之后一个字符。
还有就是第一种方法更简单易懂,方便别人维护你的代码。