反对警告检查的编码风格

标签 c while-loop c99 c89

在干净编译警告期间,我遇到了以下代码:

char *strcpy(char *dest, char *src)
{
    unsigned int i;

    while( dest[i] = src[i] )//assignment in condition
        i++;

    return dest;
}

代码的基本功能应该没问题,但是编译器警告assignment in condition,这部分代码有没有潜在的风险?这种警告是否需要清除?

最佳答案

各种warning需要清理

引入此警告是因为 === 经常被程序员混淆(你好,Pascal!),并且可以通过在赋值周围添加括号来明确说明您的意图表达式:

if ((x = y)) // no warning

关于反对警告检查的编码风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26416833/

相关文章:

C 错误, "' 预期为 '=' ',' ';' 、 'asm' 或 '__attribute__' 之前 'Bufferpar' "

计算 C99 中两个日期字符串之间的工作日数

c - C : does GCC follow the C99 spec, 中的链接还是我不了解规范?

c - C99 标准是否允许编译器转换代码,以便在满足某些推导条件后不再评估相同的表达式?

c - 反转数组

C - 将一个文件夹内容复制到另一个

c# - 为什么当我尝试在列表中查找 .IndexOf(a) 时返回 -1?

c++ - 仅限十进制数的无限循环

python-3.x - 为什么我的代码没有跳出 while 循环?

c - 我的 C 代码有什么问题?