我最近偶然发现了这段代码:
void strcat( char* dest, char* src )
{
while (*dest) dest++;
while (*dest++ = *src++);
}
看起来 *dest++ = *src++
操作被用作 while 循环的条件。这个赋值操作是如何转化为 bool 值的呢?我很难理解它。
此外,相同的语法在 C++ 中有效吗?
最佳答案
在 C 语言中,逻辑语句中的非零值被视为 true,零被视为 false。
并且任何赋值语句的结果都是赋值后左操作数的值。
因此在第二个循环中,如果分配的值为 0
,则条件的结果为 false。在第一个循环中,如果指向的变量自身的值为0
,则条件为false。
此语法在 C++ 中也有效。
关于c++ - 赋值运算在 C 中隐式计算出什么 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12115199/