C语言基础1

C语言基础1,c,C,如果a是变量,C中a++和a=a+1之间的区别是什么。 告诉我以下作业的区别 x=a+1; x=a++; 我无法在谷歌上找到令人信服的解释。请清楚地一步一步地解释差异。x=a++首先将a的值返回变量x,然后将其递增 x=a+1此处计算a+1,结果存储在xa=a+1计算a+1的结果并将其分配给a a++将a增加1,但计算结果为a的上一个值 ++a将a增加1,并计算为a的新值 a+=1与++a相同 例如: x=a++→a将递增1,并且a的上一个值将分配给x x=++a→ a将递增1,而a的新值将分

如果a是变量,C中a++和a=a+1之间的区别是什么。 告诉我以下作业的区别

x=a+1;
x=a++;

我无法在谷歌上找到令人信服的解释。请清楚地一步一步地解释差异。

x=a++
首先将
a
的值返回变量
x
,然后将其递增


x=a+1
此处计算
a+1
,结果存储在
x
a=a+1
计算
a+1的结果并将其分配给
a

a++
a
增加
1
,但计算结果为
a
的上一个值
++a
a
增加
1
,并计算为
a
的新值
a+=1
++a相同

例如:
x=a++
a
将递增
1
,并且
a
的上一个值将分配给
x


x=++a
a
将递增
1
,而
a
的新值将分配给
x

x=a+1
仅设置
x
的值。
x=a++
首先将
x
设置为
a
的值,然后递增
a
a++
本身就是一个操作,您可以将其作为单个语句调用以递增
a
,而无需将其分配给
x

仅供参考,还有
++a
,可以这样使用:

x=++a
。在这种情况下,
a
首先递增,然后递增的值被分配给
x
。在任何一种情况下,
++
操作符都会修改
a
,而C11标准(草案)中的
a+1

则不是这种情况:

6.5.2.4后缀增量[…]运算符[…]

[……]

2后缀++运算符的结果是操作数的值。作为副作用 操作数对象的值递增(即,适当类型的值1为 添加到它)

所以

结果
a
1
x
0
3个差异

  • 返回值和副作用

    // a is incremented, but its former value is assigned to x 
    x=a++;  // 
    // a is unchanged.  The sum of `a+1`is assigned to x 
    x=a+1;
    
  • 。后缀
    ++
    (又称后缀增量)的优先级高于简单加法

  • ++
    仅适用于整数和非空*
  • 指针类型<代码>+1
    适用于所有标量类型,包括
    double

    int a;
    x=a++; // valid
    x=a+1; // valid
    
    double a;
    x=a++; // invalid
    x=a+1; // valid
    

    试一试怎么样?示例中的
    ++
    称为后增量运算符。这应该对你的谷歌搜索有所帮助。
    int a;
    x=a++; // valid
    x=a+1; // valid
    
    double a;
    x=a++; // invalid
    x=a+1; // valid