赋值运算符与c #包括 int main() { int i,j; i=j=(22,23,24); printf(“i:%d”,i); printf(“\nj:%d”,j); }
这给出了i,j和24的输出赋值运算符与c #包括 int main() { int i,j; i=j=(22,23,24); printf(“i:%d”,i); printf(“\nj:%d”,j); },c,assignment-operator,C,Assignment Operator,这给出了i,j和24的输出 #include <stdio.h> int main() { int i,j; i=j=(22,23,24); printf("i:%d",i); printf("\nj:%d",j); } #包括 int main() { int i,j; i=j=22,23,24; printf(“i:%d”,i); printf(“\nj:%d”,j); } 这两个i,j都是22。 有人能解释一
#include <stdio.h>
int main()
{
int i,j;
i=j=(22,23,24);
printf("i:%d",i);
printf("\nj:%d",j);
}
#包括
int main()
{
int i,j;
i=j=22,23,24;
printf(“i:%d”,i);
printf(“\nj:%d”,j);
}
这两个i,j都是22。
有人能解释一下背后的术语吗。
TIA赋值运算符
=
的优先级高于逗号运算符,
在这份声明中
#include <stdio.h>
int main()
{
int i,j;
i=j=22,23,24;
printf("i:%d",i);
printf("\nj:%d",j);
}
i=j=(22,23,24);
首先计算(22,23,24)
。逗号运算符忽略22
和23
,并将其计算为24
。然后,结果24
被分配给j
,并且该值也被分配给i
另一方面,在这份声明中
#include <stdio.h>
int main()
{
int i,j;
i=j=22,23,24;
printf("i:%d",i);
printf("\nj:%d",j);
}
i=j=(22,23,24);
首先计算
i=j=22
。这将22
分配给j
,然后将值分配给i
。之后,逗号运算符将忽略赋值运算符22
和整数文本23
的计算结果。最后,表达式计算为值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,23,24);
首先计算(22,23,24)
。逗号运算符忽略22
和23
,并将其计算为24
。然后,结果24
被分配给j
,并且该值也被分配给i
另一方面,在这份声明中
#include <stdio.h>
int main()
{
int i,j;
i=j=22,23,24;
printf("i:%d",i);
printf("\nj:%d",j);
}
i=j=(22,23,24);
首先计算i=j=22
。这将22
分配给j
,然后将值分配给i
。之后,逗号运算符将忽略赋值运算符22
和整数文本23
的计算结果。最后,表达式被计算为值24
,该值也被忽略。常量表达式的逗号分隔列表没有多大意义。逗号运算符的主要用途是分隔赋值-这是一种透明且有意识的副作用
使用括号和两个以上的赋值,它将分组为:
i=j=22,23,24;
由于parens(E)
中的表达式是一个主表达式,因此从层次上可以将其视为
i = j = (22,x=23,y=24);
此E
由三个逗号分隔的(子)表达式组成,其中最后一个表达式起作用。这是带有结果/评估的作业y=24
22
被扔掉,但是x=23
有明显的副作用
通常,E
类似于不需要参数的2*n+1
。直到i=j>22?23:24
(有点让人困惑)
第二组:
i = j = E;
这一点现在开始有意义了。一条线上只有三个助手。23和24不是“丢失的”
赋值表达式
i=j=22
本身有一级递归;它从右向左工作,这是很自然的
但是这些例子更多的是关于组合分隔逗号运算符,
和分组括号(
)
常量表达式的逗号分隔列表没有多大意义。逗号运算符的主要用途是分隔赋值-这是一种透明且有意识的副作用
使用括号和两个以上的赋值,它将分组为:
i=j=22,23,24;
由于parens(E)
中的表达式是一个主表达式,因此从层次上可以将其视为
i = j = (22,x=23,y=24);
此E
由三个逗号分隔的(子)表达式组成,其中最后一个表达式起作用。这是带有结果/评估的作业y=24
22
被扔掉,但是x=23
有明显的副作用
通常,E
类似于不需要参数的2*n+1
。直到i=j>22?23:24
(有点让人困惑)
第二组:
i = j = E;
这一点现在开始有意义了。一条线上只有三个助手。23和24不是“丢失的”
赋值表达式
i=j=22
本身有一级递归;它从右向左工作,这是很自然的
但这些示例更多地是关于组合分隔逗号运算符
、
和分组括号(
)
请注意,在其他情况下,“值也分配给i
”。在x=y=value
中,值
未分配给y
,也分配给x
y
接收转换为y
类型的值,然后x
接收转换为x
类型的结果。所以doublex;int-y;x=y=3.5代码>将3分配给x
,而不是3.5。仅供参考,请注意在其他情况下“值也分配给i
”。在x=y=value
中,值
未分配给y
,也分配给x
y
接收转换为y
类型的值,然后x
接收转换为x
类型的结果。所以doublex;int-y;x=y=3.5代码>将3分配给x
,而不是3.5。