d
if (!foo1() || !foo2() || !foo3)
Size: a a a
d
if (!foo1() || !foo2() || !foo3)
O
if (!foo1() || !foo2() || !foo3)
If a sequence point is present between the subexpressions E1 and E2, then both value computation and side effects of E1 are sequenced-before every value computation and side effect of E2
There is a sequence point after evaluation of the first (left) operand and before evaluation of the second (right) operand of the following binary operators: && (logical AND), || (logical OR), and , (comma).
АК
if (foo1() || foo2() || foo3)
d
АК
d
D
все вернут true
"ИЛ
Е
ИЛ
ПК
LA
LA
z
не может выполниться до начала других потоков? К тому же, если я перенесу вызов join()
после assertion, то оно наоборот, всегда проваливается. То есть обычный поток начинает своё исполнение после вызова join()/detach()
? И что происходит с std::async()
по умолчанию? Поток может и не запускаться до вызова get()
, однако в этой точке поток выполнения всегда дождётся результата?ПК
z
не может выполниться до начала других потоков? К тому же, если я перенесу вызов join()
после assertion, то оно наоборот, всегда проваливается. То есть обычный поток начинает своё исполнение после вызова join()/detach()
? И что происходит с std::async()
по умолчанию? Поток может и не запускаться до вызова get()
, однако в этой точке поток выполнения всегда дождётся результата?std::thread
и окончанием join()LA
std::thread
и окончанием join()AN
ПК
++z;
?LA
++z;
?z
, что откровенно странно, то есть. Это вообще не мой пример. Но там, откуда я его взял, утверждается, что assertion никогда не провалитсяVK
++z;
?ПК
z
, что откровенно странно, то есть. Это вообще не мой пример. Но там, откуда я его взял, утверждается, что assertion никогда не провалится