digitalmars.D.learn - Ascertaining!
- Salih Dincer (21/21) Jul 09 2022 Hi All,
- Paul Backus (6/17) Jul 09 2022 Yes, [the `=` operator is right-associative][1] in pretty much
Hi All,
I didn't know compiling was bottom-up. This example proves that.
Because in single-line expressions, it takes value from the
right, firstly.
```d
void main()
{
int n; // true (n == 0)
int i = 1; // true (i == 1)
int j = i = n; // all numbers are 0
n =
i =
j =
1; // all numbers are 1
// ascertaining: n = i = j = 1;
assert(j);
assert(i);
assert(n);
}
```
SDB 879
Jul 09 2022
On Saturday, 9 July 2022 at 10:12:00 UTC, Salih Dincer wrote:
Hi All,
I didn't know compiling was bottom-up. This example proves
that. Because in single-line expressions, it takes value from
the right, firstly.
```d
void main()
{
int n; // true (n == 0)
int i = 1; // true (i == 1)
int j = i = n; // all numbers are 0
```
Yes, [the `=` operator is right-associative][1] in pretty much
all C-like languages, so an expression of the form `a = b = c` is
equivalent to `a = (b = c)`.
[1]:
https://en.wikipedia.org/wiki/Operator_associativity#Right-associativity_of_assignment_operators
Jul 09 2022








Paul Backus <snarwin gmail.com>