"h = b = out" 这行在 C 中是什么意思
What does the line "h = b = out" mean in C
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. */
我不知道这一行是否只是一种将 h
和 b
都设置为 out
的奇怪方式,或者如果它是一个设置 h
等于 true
(0?) 如果 b
已经等于 out
.
它将 h 和 b 设置为 out。
布尔值将是 h ? b : out;
并且意味着如果 h 为真则 b 否则为 - 所以它没有为 h
设置任何内容
它不能是布尔值,因为那样会使用 ==
而不是 =
。
所以是的,这是一种设置两个变量的(奇怪的)方式,基于 b=out
的值是 out
.
的事实
h = b = 出来;
在 C 中,这意味着设置 h 和 b 都等于 out。
h = ( b = 输出);表示布尔表达式。
=
是 always C 中的赋值运算符,不能用于比较 2 个值。要获得“布尔”表达式,您必须使用 ==
。表达式 a = b
将 b 赋给 a 并且 returns 赋值 可以在另一个表达式中使用。所以 h = b = out;
实际上将 out
分配给了 b
和 h
。它被解析为 h = (b = out)
因为在 C 中 =
运算符是 left associative
Assignment also returns the same value as what was stored in lhs
(so that expressions such as a = b = c
are possible). The value category of the assignment operator is non-lvalue (so that expressions such as (a=b)=c
are invalid).
https://en.cppreference.com/w/c/language/operator_assignment
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. */
我不知道这一行是否只是一种将 h
和 b
都设置为 out
的奇怪方式,或者如果它是一个设置 h
等于 true
(0?) 如果 b
已经等于 out
.
它将 h 和 b 设置为 out。
布尔值将是 h ? b : out;
并且意味着如果 h 为真则 b 否则为 - 所以它没有为 h
它不能是布尔值,因为那样会使用 ==
而不是 =
。
所以是的,这是一种设置两个变量的(奇怪的)方式,基于 b=out
的值是 out
.
h = b = 出来; 在 C 中,这意味着设置 h 和 b 都等于 out。 h = ( b = 输出);表示布尔表达式。
=
是 always C 中的赋值运算符,不能用于比较 2 个值。要获得“布尔”表达式,您必须使用 ==
。表达式 a = b
将 b 赋给 a 并且 returns 赋值 可以在另一个表达式中使用。所以 h = b = out;
实际上将 out
分配给了 b
和 h
。它被解析为 h = (b = out)
因为在 C 中 =
运算符是 left associative
Assignment also returns the same value as what was stored in
lhs
(so that expressions such asa = b = c
are possible). The value category of the assignment operator is non-lvalue (so that expressions such as(a=b)=c
are invalid).https://en.cppreference.com/w/c/language/operator_assignment