c++ - 无意中使用 = 而不是 ==

标签 c++ c compiler-construction programming-languages

好像

if (x=y) { .... }

而不是

if (x==y) { ... } 

是万恶之源。

为什么不所有编译器将其标记为错误而不是可配置的警告?

我有兴趣找出构造 if (x=y) 有用的情况。

最佳答案

一个有用的结构是例如:

char *pBuffer;
if (pBuffer = malloc(100))
{
    // Continue to work here
}

如前所述,并且现在被多次否决,我可能会补充说这不是特别好的风格,但我经常看到它说它很有用。我在 new 中也看到过这种情况,但它让我的胸口更痛。

另一个争议较小的例子可能是:

while (pointer = getNextElement(context))
{
    // Go for it. Use the pointer to the new segment of data.
}

这意味着函数 getNextElement() 在没有下一个元素时返回 NULL 以便退出循环。

关于c++ - 无意中使用 = 而不是 ==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/399792/

相关文章:

c++ - 将指向数组数组的指针传递给函数

c++ - Metal - 线程本地的命名空间变量?

c# - .net 库 (dll) 优化

c# - 编译器只会编译可以执行的代码吗?

c++ - 片段着色器中的“错误 : sampler arrays indexed with non-constant expressions are forbidden in GLSL 1. 30 及更高版本”

c++ - Android ndk编译SoundTouch Library报错

C套接字仅使用二进制数据造成内存泄漏

c++ - C代码分解器

c++ - 超线程 - 我可以通过哪个测试来检查它是启用还是禁用?

compiler-construction - 不确定从链接构建 Flex 和 Bison 编译器的错误