@habrachat

Страница 3023 из 6731
George Unicorn.
30.08.2016
11:15:51
Сжатый

я люблю грин дей
30.08.2016
11:15:53
все к ноге

хотя теперь я не понимаю

George Unicorn.
30.08.2016
11:16:08
все к ноге
А еще я единорог

Google
я люблю грин дей
30.08.2016
11:16:13
почему 22

Славик
30.08.2016
11:18:01
наверное, операция = выполняется позже, чем i++

i=0; i=i++; > 0

George Unicorn.
30.08.2016
11:19:29
i=0; i=i++; > 0
Конечно после

i=(i++)

Тогда сначало ++

Sergey
30.08.2016
11:25:35
i++ возвращает неизмененный результат, очевидно жеж

++i — возвращает измененный

George Unicorn.
30.08.2016
11:26:35
Yokai
30.08.2016
11:27:55
кто объяснит мне, где я ошибся?
в коде i=++i+10+i+++10;. Его можно было записать в виде i=23;, и вероятность допущения ошибки была бы ниже

Славик
30.08.2016
11:28:06
Sergey
30.08.2016
11:28:24
0 1

вангую

Google
Sergey
30.08.2016
11:28:45
так стоп

я в сортах JS не разбираюсь

я ток по с и с++

Славик
30.08.2016
11:29:18
повтори то же и самое на си

будет интересно

Sergey
30.08.2016
11:29:24
ок

Славик
30.08.2016
11:30:35
int i = 0; i=++i+10+i+++10; printf("%d\n", i);

Yokai
30.08.2016
11:30:37
И не в традициях бф
у меня бф=бойфренд. Я чего-то не понимаю %) По мне так сложные выражения ненужны

Sergey
30.08.2016
11:30:50
не скомпилится же

Yokai
30.08.2016
11:30:57
int i = 0; printf("%d\n%d", i, i++);

Славик
30.08.2016
11:31:09
да ну

George Unicorn.
30.08.2016
11:31:30
@yokaidev

Yokai
30.08.2016
11:31:46
@yokaidev
что?

George Unicorn.
30.08.2016
11:32:06
что?
Выше посмотри

Sergey
30.08.2016
11:33:03
да ну
➜ ~/dev/c/increment clang main.c -o app main.c:10:7: warning: multiple unsequenced modifications to 'i' [-Wunsequenced] i=++i+10+i+++10; ^ ~~ 1 warning generated.

Google
Sergey
30.08.2016
11:33:18
лол

фигасе

Славик
30.08.2016
11:33:27
warning же пофиг

Sergey
30.08.2016
11:33:33
i: 122

Славик
30.08.2016
11:33:42
скомпилилось?

Sergey
30.08.2016
11:33:47
ага

Славик
30.08.2016
11:33:58
вот так поворот

Yokai
30.08.2016
11:34:08
посмотрел. Всё равно выражаю недовольство, потому что отдел кадров таким кодом программистов проверяет => люди учатся писать\читать такой код => в продакшне компании получают такой код

Sergey
30.08.2016
11:34:47
поэтому надо компилить с -Werror

))))

Славик
30.08.2016
11:35:51
почему 122

Sergey
30.08.2016
11:36:01
потому что вероятно UB

Sergey
30.08.2016
11:36:08
точки следования

Yokai
30.08.2016
11:36:46
Можно ли как-нибудь без мучений на linux запаковать python-проект с зависимостями так, чтоб он на macos запустился? Такая ситуация, что похоже придется pure python2.7 использовать. MacOS у клиента и его мучать не хочется

Sergey
30.08.2016
11:36:55
на лурке есть про i++ + ++i

точнее скорее не ub, но unspecified

http://lurkmore.to/%2B%2Bi_%2B_%2B%2Bi

➜ ~/dev/c/increment gcc -Wall -Wextra main.c -o app main.c: In function ‘main’: main.c:10:6: warning: operation on ‘i’ may be undefined [-Wsequence-point] i=++i+10+i+++10; ^ main.c:10:6: warning: operation on ‘i’ may be undefined [-Wsequence-point]

> may be undefined

забавно, что кланг такого предупреждения не выдаёт

Google
Sergey
30.08.2016
11:39:07
значит у него внутри по-другому написаны sequence points

Yokai
30.08.2016
11:40:13
»-Wextra

и -Wall

Sergey
30.08.2016
11:40:30
»-Wextra
Нет, `-Wall`

Ну

И что?

Yokai
30.08.2016
11:41:08
Sergey
30.08.2016
11:41:16
Уже

Admin
ERROR: S client not available

Sergey
30.08.2016
11:41:19
Пропихнул

Ну ты прикалываешься?

)

Я просто ноут убрал, сейчас не удобно

Скомпильте кто-нибудь на кланге со стеной

Славик
30.08.2016
11:44:38
эээ

попробуй со скобками

Penter
30.08.2016
11:46:07
попробуй со скобками
http://www.youtube.com/watch?v=aYTBMmHbWZ8

Славик
30.08.2016
11:47:46
#include <stdio.h> int main() { int i = 0; i=(++i)+10+(i++)+10; printf("%d\n", i); return 0; } 22

Sergey
30.08.2016
11:51:44
попробуй со скобками
(+ (incr n) 10 (incr n) 10)

Как просил

Google
Yokai
30.08.2016
11:53:14
#include <stdio.h> int main() { int i = 0; i=(++i)+10+(i++)+10; printf("%d\n", i); return 0; } 22
а если сначала считается выражение (++i)+10+(i++)+10 (=22), потом выполняется i++ (=1), а потом i=22?

Sergey
30.08.2016
11:55:30
а если сначала считается выражение (++i)+10+(i++)+10 (=22), потом выполняется i++ (=1), а потом i=22?
В смысле? Все просто: В разных компиляторах по-разному, зависит от того, как преобразуется выражение Еще раз, проблема в точках следования, и эту проблему не будут решать

Потому что это ub или unspecified

Вот когда cxx станет expression-oriented...

Просто _так_ писать не надо

Yokai
30.08.2016
12:01:10
_так_?

не так... Забыл как выделять жиром

Sergey
30.08.2016
12:02:23
а если сначала считается выражение (++i)+10+(i++)+10 (=22), потом выполняется i++ (=1), а потом i=22?
Вероятно, выражение раскрывается последовательно поэтому i++ вернет 0 0 + 10 ++i вернет 2 (потому что i == 1) 12 + 10

Yokai
30.08.2016
12:03:04
:<

дождался, теперь у меня прав меньше, чем у бота

Sergey
30.08.2016
12:04:24
Если выражение раскрывается справа налево (возможно так и есть, я не помню), то ++i вернет 1 10 + 1 i ++ вернет 1 1 + 11 + 10

Славик
30.08.2016
12:11:06
i=(++i)+10+(i++)+10 i=1+10+(i++)+10 //(i=1 i=1+10+1+10 //i=2 i=22 //но сейчас, пока эта операция еще выполняется i=2, а я думал, что сначала будет i=22, а потом отработает i++

Sergey
30.08.2016
12:12:48
https://en.wikipedia.org/wiki/Sequence_point Там написано, что при вычислении выражения f() + g() Либо f, либо g может выполнится первым

i=(++i)+10+(i++)+10 i=1+10+(i++)+10 //(i=1 i=1+10+1+10 //i=2 i=22 //но сейчас, пока эта операция еще выполняется i=2, а я думал, что сначала будет i=22, а потом отработает i++
Это же последовательный код, i будет изменено в момент, когда будет вызвано i++ Просто i++ вернет предыдущее значение, а само i к тому моменту уже изменится i++ — функция с side effects, в этом проблема

Славик
30.08.2016
12:27:28
вот на примере и разрулили

норм

Langepas
30.08.2016
13:44:42
Ребята мне необходима помощь

Страница 3023 из 6731