Oli*_*rth 46
它的评估是2
因为标准是如何定义它的.从C11标准,第6.5.16节:
赋值表达式具有赋值后左操作数的值
这是允许这样的事情:
a = b = c;
Run Code Online (Sandbox Code Playgroud)
(尽管关于这样的代码是否是好事还是存在争议.)
顺便说一句,这种行为在Java中被复制(我敢打赌它在C#中也是一样的).
fox*_*337 16
规则是将=
转换的右侧操作数返回到赋值给的变量的类型.
int a;
float b;
a = b = 4.5; // 4.5 is a double, it gets converted to float and stored into b
// this returns a float which is converted to an int and stored in a
// the whole expression returns an int
Run Code Online (Sandbox Code Playgroud)