最近、このコードに出くわしました:
void strcat( char* dest, char* src )
{
while (*dest) dest++;
while (*dest++ = *src++);
}
*dest++ = *src++
操作が while ループの条件として使用されているように見える場所。この代入演算はどのようにブール値に変換されますか? 私はそれを理解するのに苦労しています。
さらに、同じ構文は C++ でも有効ですか?
最近、このコードに出くわしました:
void strcat( char* dest, char* src )
{
while (*dest) dest++;
while (*dest++ = *src++);
}
*dest++ = *src++
操作が while ループの条件として使用されているように見える場所。この代入演算はどのようにブール値に変換されますか? 私はそれを理解するのに苦労しています。
さらに、同じ構文は C++ でも有効ですか?
C では、論理ステートメント内のゼロ以外の値はtrueとしてカウントされ、ゼロはfalseとしてカウントされます。
また、代入ステートメントの結果は、代入後の左オペランドの値です。
したがって、2 番目のループで、割り当てられた値が である場合0
、条件の結果はfalseになります。最初のループで、指定された変数自体の値が である場合0
、条件はfalseです。
この構文は C++ でも有効です。
Cで代入演算が暗黙的に評価するブール値は何ですか?
代入演算は、代入される変数に評価されます (左側)。
int i = 0;
int j = (i = i+5); // j == 5 | (i = i+5) assigns 5, then evaluates to i
現在、整数値を条件として使用すると、ゼロ以外の場合は真、ゼロの場合は偽と評価されます。