C中赋值运算符与等运算符之间的区别是什么

时间:2017-12-05 21:50:40

标签: c

int main(){

   int x = 5580, y = 55098;

   printf( "%d\n", y = x);

   return 0;

}

为什么要打印y的值?我认为x的值被分配给y,但事实并非如此。

2 个答案:

答案 0 :(得分:1)

根据standard,赋值表达式在赋值后计算为左操作数的值:

  

6.5.16分配运营商

     

(3)赋值运算符将值存储在指定的对象中   左操作数。赋值表达式的值为left   分配后的操作数

因此y=x中的printf( "%d\n", y = x)首先允许y获取x的值,然后评估y的(新分配的)值。因此printf - 语句的输出将为5580,即x的值,这是y的新值。

答案 1 :(得分:0)

这是C和其他语言的预期行为。你的问题标题也没有措辞。赋值运算符“是”等于运算符,这正是您正在使用的运算符。您可能会对C中的操作顺序感到困惑。在printf行上,表达式y = x首先发生,结果值(y)用作您的参数printf函数,这就是为什么你看到y的值打印出来的原因。这是C的基础之一。我建议阅读C语法。