int main(){
int x = 5580, y = 55098;
printf( "%d\n", y = x);
return 0;
}
为什么要打印y的值?我认为x的值被分配给y,但事实并非如此。
答案 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语法。