c - C中赋值运算符和等于运算符有什么区别

标签 c

int main(){

   int x = 5580, y = 55098;

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

   return 0;

}

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

最佳答案

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

6.5.16 Assignment operators

(3) An assignment operator stores a value in the object designated by the left operand. An assignment expression has the value of the left operand after the assignment

因此 printf("%d\n", y = x) 中的 y=x 首先让 y 取以下值x,然后计算出 y 的(新分配的)值。因此,printf语句的输出将是5580,即x的值,它是y<的新值.

关于c - C中赋值运算符和等于运算符有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663229/

相关文章:

c - 通过 TCP 发送结构(C 编程)

c - 如何在编译 clang 时包含 GLUT

c++ - 在 C/C++ 中从 main() 返回值的目的是什么?

c++ - 从标准输入中读取未知列矩阵的最佳方法是什么?

c - 将多线程添加到这个简单算法的有效方法是什么?

c++ - 从注入(inject)进程的 DLL 调用函数并更改指针函数的地址

c++ - 如何从 C++ 中安全地转义字符串

c - "null pointer"尝试操作字符串时出错

c++ - 将数据从 const void *data 转换为 double

c - 添加历史命令到多客户端服务器程序