为什么Right Associativity不适用于声明声明

Joe*_*Joe 6 c

int a=b=c=10;  //invalid statement
Run Code Online (Sandbox Code Playgroud)

但以下是有效的陈述

int a,b,c;
a=b=c=10;
Run Code Online (Sandbox Code Playgroud)

第一个是无效的,因为b在b得到它的值之前被分配到一个偶数.

但是第二种情况是有效的,因为相等(=)符号具有右关联,即"="符号将开始从右侧获得偏好.

我的问题是:为什么在第一种情况下不适用右关联?这是否意味着Associativity不适用于声明声明?我需要更加明确这一点.

tor*_*rak 8

它不起作用,因为它在语法上不正确.正如您在第二个示例中所示,使用逗号作为分隔符声明了多个类型的变量.如果相反bc已经宣布,那么事情就可以了.例如,这有效:

int b,c;
int a=b=c=10;
Run Code Online (Sandbox Code Playgroud)

你甚至可以这样做(至少使用VS2010编译器):

int b,c,a=b=c=10;
Run Code Online (Sandbox Code Playgroud)

请注意,我会说看起来很糟糕,并建议不要这样做.