c - 赋值运算符和 c
问题描述
#include <stdio.h>
int main()
{
int i,j;
i=j=(22,23,24);
printf("i:%d",i);
printf("\nj:%d",j);
}
这将 i,j 的输出都设为 24。
#include <stdio.h>
int main()
{
int i,j;
i=j=22,23,24;
printf("i:%d",i);
printf("\nj:%d",j);
}
这将 i,j 都设为 22。有人可以解释背后的术语吗?TIA
解决方案
赋值运算符=
的优先级高于逗号运算符,
。
在这份声明中
i=j=(22,23,24);
(22,23,24)
首先计算。和被逗号运算符忽略,它被评估22
为。然后,结果被赋值给,值也被赋值给。23
24
24
j
i
另一方面,在这份声明中
i=j=22,23,24;
i=j=22
首先计算。这分配22
给j
,然后将值分配给i
。之后,赋值运算符的求值结果22
和整数文字23
被逗号运算符忽略。最后,表达式被评估为 value 24
,它也被忽略了。
推荐阅读
- javascript - 来自minio的数据流的数据是多次来的
- android - 如何在多部分中给出文件路径?
- javascript - 获取数据并将其显示为下拉菜单
- python - Python - 从 CSV 获取特定内容的快速方法
- python - 当我使用这个 python 脚本重命名文件时,为什么文件会被删除?
- scala - 从 scala.js 访问 Visual Viewport API
- node.js - 如何实现异步模式以接收来自 Azure IoT 中心 C2D 的反馈
- documentation - 使用 JSDoc 记录 Cypress.io 测试
- google-sheets - 如何从“版本”约定中选择最小值?
- reactjs - 反应复选框表单状态延迟