On some backends, measuring the same expected value twice to the same classical register always leaves that classical register in the "1" state. I don't know if these results will hold over time, but when I ran the following code the outcome was striking.
OPENQASM 2.0;
include "qelib1.inc";
qreg q[2];
creg c[1];
measure q[1] -> c[0];
measure q[0] -> c[0];
This program should always produce "0" in a simulator and generally produce "0" in a real device. Instead, the results are:
Always/Mostly "0"
- ibmq_qasm_simulator
- ibmq_essex
- ibmq_burlington
Always "1"
- ibmqx2
- ibmq_16_melbourne
- ibmq_ourense
- ibmq_vigo
As a programmer, I think writes should be independent and the last write should win unless I explicitly allow some kind of quantum fuzziness.