赋值运算符和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
回答
赋值运算符的=优先级高于逗号运算符,。
C 运算符优先级 - cppreference.com
在这份声明中
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,它也被忽略。