Evgenii
Anonymous
Evgen
И в 17 стандарте тоже?
Как я понимаю, да
$ g++ -x c++ - -o /tmp/a.out -std=c++17 -Wall
#include <iostream>
int main() {
int t = 0;
t = t++;
std::cout << t;
return 0;
}
<stdin>: В функции «int main()»:
<stdin>:4:3: предупреждение: операция над «t» может дать неопределенный результат [-Wsequence-point]
Evgen
Anonymous
Evgenii
Evgen
Evgenii
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0145r3.pdf
Evgen
И в 17 стандарте тоже?
$ clang++ -Wall -x c++ - -o /tmp/a.out -std=c++1z
#include <iostream>
int main() {
int t = 0;
t = t++;
std::cout << t;
return 0;
}
<stdin>:4:6: warning: multiple unsequenced modifications to 't' [-Wunsequenced]
t = t++;
~ ^
1 warning generated.
$ pacman -Qs clang
local/clang 3.9.1-2
C language family frontend for LLVM
Evgenii
In summary, the following expressions are evaluated in the order a, then b ... 5. b @= a
Evgen
Наверное
Evgen
+
Evgenii
An expression X is said to be sequenced before an expression Y if every value computation and
every side effect associated with the expression X is sequenced before every value computation
and every side effect associated with the expression Y.
Evgen
Так что, это UB (хоть и выдаёт 0 при компиляции/выполнении)
Evgen
Evgenii
Evgenii
Evgenii
А вот присвоение вроде как сначала правая часть полностью, потом левая
Evgen
t.operator++(int) сначала вернёт t (который равен 0), потом выполнит t = t + 1
Поэтому, в результате, должно быть t = 0
Evgen
Evgen
For instance, the expression f(i++, i) where i is an integer variable leads to undefined behavior, as does v[i] = i++. Even when the behavior is not undefined, the result of evaluating an expression can still be anybody’s guess.
Evgen
И я
Evgen
http://en.cppreference.com/w/cpp/language/operator_incdec
Посмотрите пример ниже
Evgen
Правда, там частично затрагивается...
Evgenii
Evgen
Evgen
Evgenii
😔
Evgen
Ну окей
λ
λ
After 9,223,372,036,854,775,808 tries, Google has created the first SHA-1 collision, proving that the encryption scheme is no longer secure
λ
Целеустремленные блин 😊
λ
Andrei
Человек, который принял жену за конституированную в модусах сознания предметность.
Vladislav
Andrei
D:
Andrew
Можете посоветовать какую нибудь книгу про алгоритмы. (На русском пожалуйста)
Michael
Michael
Ладно, вот средний уровень:
http://logic.pdmi.ras.ru/~kulikov/sites/default/files/algorithms_href.pdf
( https://www.ozon.ru/context/detail/id/27676529/ )
Andrew
О спасибо, мне подходит
Micktu 😬
@Dead_Pegasus спасяп, и правда, чего я там забыл
серёжа
🦥Alex Fails
rostislav
Anonymous
/vzhuh@FailsBot
Anonymous
А это что? А то у меня описание в экран мобилы не влезает
Anonymous
это вжух
rostislav
изза чего зашли?
rostislav
была же только-что ссылка на хабр или гик
🦥Alex Fails
как-то на гт выкладывали чсыль на мой чат
rostislav
реклама норм)
rostislav
@AlexFails а в жаббере сидишь? в разделе плюсов
🦥Alex Fails
Не. Чат не рекламировал сам
🦥Alex Fails
(Про вжуха во @fludpac переместил)
Dmitry
у меня вопрос такой возник, кстати
Dmitry
подключаю тут в очередной проект sqlite3 (который amalgamation, единым целым)
Dmitry
куча ошибок.
Deleted Account
чо за Deleted Account
Dmitry
смотрю, а в sqlite3.h объявлено вот что:
typedef struct Mem sqlite3_value;
Dmitry
у меня такой неймспейс (Mem). впрочем, это явно некрасиво со стороны разработчиков sqlite забивать такое глобальное имя
Dmitry
но вопрос вот в чем
Dmitry
стандарт регламентирует те группы имен, которые не должны пересекаться, или это на совести компилятора?
Deleted Account
Dmitry
думаю, что первый вариант
🦥Alex Fails
Dmitry
да судя по всему регламентирует, я уже разобрался. я к тому, что название типа структуры и переменная этого типа могут быть одинаковыми. а вот неймспейс и тип структуры не могут быть одинаковыми
Dmitry
и уж тем более неймспейс и тип класса, т.к. тут получается неоднозначность ::
Dmitry
разработчики sqlite скоты, короче :)
Dmitry
забивать имя Mem для своих интерналсов :)
🦥Alex Fails
Да вроде оно не зарезервировано
Dmitry
точно тебе говорю зарезервировано, только что столкнулся с этой проблемой
Dmitry
у меня namespace Mem в memory.h, а в sqlite3.h внезапно typedef struct Mem sqlite3_value
🦥Alex Fails
Что за компиль
Dmitry
студия 2017
Dmitry
namespace Mem мой
Sergey
проверил. ага, все так