代入の結果が () を返すのって一見不満なんだが…

#include <stdio.h>
int main() {
int a, b;
a = b = 10;
printf("%d, %d", a, b); // 10, 10
return 0;
}

a = b = 10
p [a, b] # [10, 10]

let b = ref 0 in
let a = b := 10 in
Printf.printf "%b, %d\n" (a = ()) !b (* true, 10 *)

fn main() {
let (a, b);
a = b = 10;
println!("{:?}, {:?}", a, b); // (), 10
}

上から c, ruby, ocaml, rust の結果
所有権のこと考えるとこうなるしかないのかな