这句话是什么意思;h=b=out";用C表示的平均值

这句话是什么意思;h=b=out";用C表示的平均值,c,variable-assignment,assignment-operator,boolean-operations,C,Variable Assignment,Assignment Operator,Boolean Operations,我不知道这行是否只是一种奇怪的方式,将h和b设置为out,或者它是一个布尔表达式,将h设置为true(0?),如果b已经等于out它将h和b设置为out。 布尔值应该是h?b:出去表示如果h为true,则b为else out-因此它没有将任何值设置为h它不能是布尔值,因为这将使用=而不是= 是的,这是一种(奇怪的)设置两个变量的方法,基于b=out的值是outh=b=out; 在C中,这意味着将h和b都设置为out。 h=(b=输出);它表示布尔表达式。=始终是C中的赋值运算符,不能用于比较两个

我不知道这行是否只是一种奇怪的方式,将
h
b
设置为
out
,或者它是一个布尔表达式,将
h
设置为
true
(0?),如果
b
已经等于
out

它将h和b设置为out。
布尔值应该是
h?b:出去
表示如果h为true,则b为else out-因此它没有将任何值设置为h

它不能是布尔值,因为这将使用
=
而不是
=

是的,这是一种(奇怪的)设置两个变量的方法,基于
b=out
的值是
out
h=b=out; 在C中,这意味着将h和b都设置为out。
h=(b=输出);它表示布尔表达式。

=
始终是C中的赋值运算符,不能用于比较两个值。要获得“布尔”表达式,必须使用
==
。表达式
a=b
将b赋值给a,并且返回可在另一个表达式中使用的赋值。So
h=b=out实际上将
out
分配给
b
h
。它被解析为
h=(b=out)
,因为在C中
=
操作符是

赋值还返回与存储在
lhs
中的值相同的值(因此可以使用
a=b=c
等表达式)。赋值运算符的值为非左值(因此
(a=b)=c
等表达式无效)


这不是布尔表达式输入错误。h=(b==out)OP询问的是
h=b=out
,而不是
h=b==out
,两个建议的副本都没有涉及布尔解释的部分。@Yunnosch解释正确的含义意味着它没有一些不同的含义,例如布尔表达式不,这不是布尔表达式。只有当它是
h=b==out
时,它才是布尔表达式。
=
=
运算符非常复杂different@phuclv我知道这不是布尔表达式。这就是为什么我写了“布尔值”…我刚刚明白你的意思。这样的措辞很容易让人想到它的意思是“等价的布尔表达式将是”。不,这就是OP的想法。他认为这是一个类似于
h=b==out
的布尔表达式。没有人会认为
h=b=out
h?b:out
 h = b = out;

 /* h is the number of code points that have been handled, b is the  */
 /* number of basic code points, and out is the number of ASCII code */
 /* points that have been output.                                    */