Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';s是C中赋值运算符与相等运算符之间的差值_C - Fatal编程技术网

什么';s是C中赋值运算符与相等运算符之间的差值

什么';s是C中赋值运算符与相等运算符之间的差值,c,C,为什么要打印y的值?我以为x的值被分配给y,但事实并非如此。这是C和其他语言中的预期行为。你的题目也写得不太好。赋值运算符“是”相等运算符,这正是您正在使用的运算符。您可能会对C中的操作顺序感到困惑。在printf行中,表达式y=x首先出现,结果值(y)用作printf函数中的参数,这就是为什么您会看到yprinted的值。这是C语言的基本原理之一。我建议阅读C语法。根据,赋值表达式的计算结果为赋值后左操作数的值: 6.5.16赋值运算符 (3) 赋值运算符将值存储在由指定的对象中 左操作数。赋

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

这是C和其他语言中的预期行为。你的题目也写得不太好。赋值运算符“是”相等运算符,这正是您正在使用的运算符。您可能会对C中的操作顺序感到困惑。在
printf
行中,表达式
y=x
首先出现,结果值(
y
)用作
printf
函数中的参数,这就是为什么您会看到
y
printed的值。这是C语言的基本原理之一。我建议阅读C语法。

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

6.5.16赋值运算符

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


因此
y=x
printf(“%d\n”,y=x)
中,首先让
y
接受
x
的值,然后计算为
y
的(新分配的)值。因此,
printf
-语句的输出将是
5580
,即
x
的值,这是
y
的新值。我看不到标题和正文中的问题之间有密切的关系。“相等运算符”(假设您的意思是
==
)不会出现。它应该打印
x
的值,即
5580
,实际上是这样。已尝试,输出:5580。你的意思是“在赋值为x之后的y值”?你知道赋值语句的值就是赋值吗?与相等比较(
y==x
)相反,相等比较是0表示false,而不是0表示true。这个问题是一个很好的机会,可以告诉我们,在C语言中,表达式的值是“主要”效果,有些表达式有副作用。在
y=x
中,将
y
设置为
x
的值实际上是副作用,当然这是主要用途。虽然这看起来像是一个技术点,但它教学习者如何思考C语言,从而思考其他具有副作用的表达,然后思考关于副作用和顺序点的规则,等等。
int main(){

   int x = 5580, y = 55098;

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

   return 0;

}