@ru_python

Страница 2405 из 9768
arisu
03.03.2017
19:49:01
undefined behaviour
ну и почему?

Sergey
03.03.2017
19:49:04
больше одной точки следования

Eldar
03.03.2017
19:49:04
int i = 1; i = i++ + ++ i
не скомпилится

Sergey
03.03.2017
19:49:18
не скомпилится
скомпилится

Google
Aragaer
03.03.2017
19:49:29
во-первых, не всякий лексер это распарсит

arisu
03.03.2017
19:49:32
больше одной точки следования
почему стандарт до сих пор не определил порядок точек следования?

Eldar
03.03.2017
19:49:38
скомпилится
на пробелы внимательнее посмотри

Eldar
03.03.2017
19:50:05
так-то!

arisu
03.03.2017
19:50:15
впрочем, от этого только хуже

Sergey
03.03.2017
19:50:23
типично
ну в смысле?

есть statements

это тебе не expressions

arisu
03.03.2017
19:50:33
язык настолько плох, что даже не формализован до конца

Google
Aragaer
03.03.2017
19:51:15
$ cat test.c i;main(){return i++ + ++i;} $ ./test; echo $? 2

Sergey
03.03.2017
19:51:15
чёт слишком громко звучит

Марк
03.03.2017
19:51:30
Статик структ - это функции получаются, верно?

arisu
03.03.2017
19:51:57
ладно

другой вопрос

Aragaer
03.03.2017
19:52:01
нет

Sergey
03.03.2017
19:52:08
Статик структ - это функции получаются, верно?
"struct member *" это тип возвращаемого из функции значения

Aragaer
03.03.2017
19:52:36
static это модификатор области видимости функции

arisu
03.03.2017
19:52:41
зачем нужно два оператора доступа к полям, если можно на этапе компиляции решить, где и какой используется?

Aragaer
03.03.2017
19:52:53
какие два?

Sergey
03.03.2017
19:53:01
в Си, если не сделать typedef struct blah_s blah_t, то придётся писать struct blah_s всегда

Aragaer
03.03.2017
19:53:02
точка и стрелка?

arisu
03.03.2017
19:53:04
-> и .

Sergey
03.03.2017
19:53:14
-> и .
сахар

arisu
03.03.2017
19:53:25
сахар
но зачем целых два?

Aragaer
03.03.2017
19:53:33
ну стрелка для указателей, точка для структур. Можно писать (*my_struct).field же

но со стрелкой получается симпатичнее

Sergey
03.03.2017
19:53:44
но зачем целых два?
чтобы не приучать к лиспу, конеш)

arisu
03.03.2017
19:54:02
на этапе компиляции можно определить, где нужен доступ с разыменованием

а в коде использовать один общий оператор

Google
Sergey
03.03.2017
19:54:23
ннннет

arisu
03.03.2017
19:54:46
я готов поспорить, что НИКТО в мире не пытался использовать структуру как указатель на что-то, и наоборот

Sergey
03.03.2017
19:54:48
ptr->field

arisu
03.03.2017
19:54:51
потому что это бессмыслено

Aragaer
03.03.2017
19:54:55
точка для структур, стрелка для указателей и не надо их путать 8)

Denis
03.03.2017
19:55:16
Такс такс такс што тут у нас в 3.7 указатели добавили?

Aragaer
03.03.2017
19:55:21
я думаю, через юнионы можно сделать какую-нибудь гадость

arisu
03.03.2017
19:55:23
эмм.. я немного не понял..
ну например, смотри

есть код

Sergey
03.03.2017
19:55:35
точка для структур, стрелка для указателей и не надо их путать 8)
он про то, что в compile time ptr.field могло бы само разворачиватсья в ptr->field

arisu
03.03.2017
19:55:43
struct A; struct *B;

arisu
03.03.2017
19:55:52
если ты попытаешься сделать A->field

это будет бессмысленно

и если попытаешься сделать B.field

Aragaer
03.03.2017
19:56:09
могло бы, но зачем усложнять логику, если можно иметь два оператора 8)

arisu
03.03.2017
19:56:10
это будет настолько же бессмысленно

Aragaer
03.03.2017
19:56:12
С простой.

В нем нет никакой магии под капотом и это замечательно

Sergey
03.03.2017
19:56:31
потому что explicit

Google
arisu
03.03.2017
19:56:42
оба оператора можно свести к одному, а применяемую операцию резолвить на этапе компиляции

Sergey
03.03.2017
19:56:48
ты точно знаешь, что тут поинтер, и что он не разыменовывается

arisu
03.03.2017
19:57:00
это грязь

Sergey
03.03.2017
19:57:01
null_ptr.asd

arisu
03.03.2017
19:57:03
в языке

Sergey
03.03.2017
19:57:04
*sigh*

arisu
03.03.2017
19:57:17
давай еще

Aragaer
03.03.2017
19:57:18
впрочем...

Sergey
03.03.2017
19:57:38
в таком случае в питоне self грязь

Admin
ERROR: S client not available

arisu
03.03.2017
19:57:40
int main(); int main(int argc, char**argv); какой прототип верный, и почему?

Aragaer
03.03.2017
19:57:47
int (*func()); можно вызывать как func(), а можно как (*func)()

Aragaer
03.03.2017
19:57:56
оба верные

arisu
03.03.2017
19:58:02
в таком случае в питоне self грязь
self явно указывает пространство имен, в котором ищется атрибут

Aragaer
03.03.2017
19:58:03
main() тоже верный. Без инт

Sergey
03.03.2017
19:58:03
int (*func()); можно вызывать как func(), а можно как (*func)()
потому что это грубо говоря alias функции

arisu
03.03.2017
19:58:07
а вот точка в нем одна

Aragaer
03.03.2017
19:58:09
нет, это указатель

Google
arisu
03.03.2017
19:58:19
потому что это единственный оператор для доступа к атрибутам

но зачем?
чтобы указать это явно

Sergey
03.03.2017
19:58:30
нет, это указатель
да, но используется именно в таком смысле

зачем?

arisu
03.03.2017
19:58:46
но зачем?
для чистоты кода

Sergey
03.03.2017
19:58:47
в c++ можно не писать, навпример

Aragaer
03.03.2017
19:58:54
func = func1; func(); func = func2; (*func)();

Sergey
03.03.2017
19:58:55
для чистоты кода
это "мусор", как ты выразился)

arisu
03.03.2017
19:59:12
мусор - это когда одна операция делается двумя операторами

Aragaer
03.03.2017
19:59:14
не алиас, а честный указатель

arisu
03.03.2017
19:59:22
а не когда явно указано пространство имен)

Aragaer
03.03.2017
19:59:26
операции все-таки разные

arisu
03.03.2017
19:59:42
а в крестах даже три

-> . и ::

и все делают одно и то же

Aragaer
03.03.2017
20:00:03
и кстати, по мне опять же лучше, когда компилятор скажет "Э, тут не указатель, посмотри внимательнее" вместо того, чтобы молча зохавать структуру

Sergey
03.03.2017
20:00:26
func = func1; func(); func = func2; (*func)();
struct blah { void (*i_want_use_this_alias()); } ... void fn() { ... } main() { bla->i_want_to_use_this_alias = fn и т.д. }

а в крестах даже три
:: это вообще про другое

это namespace

arisu
03.03.2017
20:01:25
разница между :: и . например в том, что оба оператора обращаются к именам в одном и том же пространстве имен (класс), но предполагают разные модификаторы у этих имен (auto и static)

Страница 2405 из 9768