赋值运算符和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)首先计算。在2223由逗号运营商忽略,它被评价24。然后,将结果24赋给j,并将值也赋给i

另一方面,在这个声明中

i=j=22,23,24;

i=j=22首先计算。这将分配22j,然后将值分配给i。之后,赋值运算符的计算结果22和整数文字23将被逗号运算符忽略。最后,表达式被计算为 value 24,它也被忽略。


以上是赋值运算符和c的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>