c++ - 赋值运算在 C 中隐式计算出什么 bool 值?

标签 c++ c conditional-statements

我最近偶然发现了这段代码:

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/

相关文章:

php - 找出数组中的序列相似性

c - 优化设置

c++ - 高效地在容器中查找多个项目

c++ - 'char (*RtlpNumberOf(T (&)[N]))[N ]': could not deduce template argument for ' T (&)[N ]' from ' char *'

c - 调用 strcpy 函数时出现段错误

r - 如何根据多个条件选择/计算列中的行数

r - 在 RStudio 中按条件分组

MySQL where 条件但不限于此

c++ - 8 位字符到十六进制表示

c++ - 涉及文件末尾时保持控制台屏幕