如果不能重新定义变量,如何在 C 中使用复合赋值运算符?

How can you use compound assignment operators in C if you can't redefine variables?

看着 wikipedia 它说:

a -= b;

相同
a = a - b;

但是当我在我的 C 程序中尝试这个时,我得到以下错误:

"error: redefinition of 'a'".

这是我的程序:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int a = 10;
    int a -= 5;

    printf("a has a value of %d\n", a);

    return 0;
}

我收到以下错误:

my_prog.c:6:6: error: redefinition of 'a'
       int a -= 5; 
           ^
my_prog.c:5:6: note: previous definition is here
       int a = 10;
           ^
my_prog.c:6:8: error: invalid '-=' at end of declaration; did you mean >'='?
       int a -= 5; 
             ^~

我在 Mac 上使用 clang。

a 的定义如下:

int a;

a 的初始化是这样完成的:

a = 10;

你在同一个表达式中执行这两个操作:

int a = 10;

现在 a 已定义并初始化。

如果您执行以下操作:

int a -= 5;

在前面的表达式之后,您正在重新定义 a,因此出现错误。

您只需要:

a -= 5;

int a = 10是一个定义。

它将变量名和类型的声明(int a)与其初始化(a = 10)相结合。

该语言不允许同一变量的多个定义,但它允许使用赋值运算符多次更改变量的值(a = 10a = a - b
a -= b等)。

您的代码应该是:

#include <stdio.h>

int main(int argc, char *argv[])
{
    int a = 10;    // declare variable `a` of type `int` and initialize it with 10
    a -= 5;        // subtract 5 from the value of `a` and store the result in `a`

    printf("a has a value of %d\n", a);

    return 0;
}