考虑变量
s
定义如下:
CHAR *s;
我试图理解以下代码的行为:
while ( *s )
if ( *s++ == ' ' )
break;
这相当于下面的(选项1)吗?
while ( *s )
if ( *s == ' ' ) {
*s++;
break;
}
或者,它是否等同于下面的(选项2)?
while ( *s ) {
*s++;
if ( *s == ' ' )
break;
}
我试图理解赋值语句左侧
++
运算符的定义行为。
它不等同于您的任何一个变体。更像是
while (s[0] != '\0')
{
// Save the current pointer
char *orig_pointer = s;
// Increase the pointer, making it point to the next character
s = s + 1;
// Compare the character pointed to by the original pointer
if (orig_pointer[0] == ' ')
{
break;
}
}
CHAR *
=> char *
*s++
=> s++
因为 *s++
在取消引用指针后递增指针(在本例中是无操作。此操作的想法是递增指针。while ( *s )
{
if ( *s == ' ' ) {s++; break;}
s++;
}