@ios_ru

Страница 571 из 2351
Maksim
08.02.2017
13:11:09
а не прибавил

1 будет

Alfred
08.02.2017
13:11:29
*ptr++
там (*ptr)++

разыменование. потом прибавление

Google
Maksim
08.02.2017
13:13:05
и все равно будет 1 )

-_-
08.02.2017
13:13:15
NSInteger i = <число> bool x = i; if (x) { чета там } else { чета там }
Ого. А из-за чего может не сработать, типа bool уже чем NSInteger?

Dmitriy
08.02.2017
13:13:41
ну видать уже переделали тип) раньше было вот так)

Alfred
08.02.2017
13:13:46
и все равно будет 1 )
не совсем верное

Dmitriy
08.02.2017
13:13:56
BOOL is an unsigned char rather than a primitive type, variables of type BOOL can contain values other than YES and NO.

F
08.02.2017
13:14:18
я почему-то думал, что во втором примере указатель на блок

опять 2, что ли

яннп

спал пару часов, теперь туплю на ровном месте

-_-
08.02.2017
13:15:04
BOOL b = 42; if (b) { printf("b is not NO!\n"); } if (b != YES) { printf("b is not YES!\n"); }
тут я так понимаю дело в том, что YES это 1

Alfred
08.02.2017
13:15:17
разница между двумя только в месте где берется указатель от a

Dmitriy
08.02.2017
13:16:43
тут я так понимаю дело в том, что YES это 1
typedef signed char BOOL; // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" // even if -funsigned-char is used. #define OBJC_BOOL_DEFINED

F
08.02.2017
13:16:51
я чую, что там что-то должно быть с захватом скоупа блоком

Google
Sergey
08.02.2017
13:17:35
сейчас же нельзя писать под non arc? все пишут под arc?

Dmitriy
08.02.2017
13:17:37
тут я так понимаю дело в том, что YES это 1
#if (TARGET_OS_IPHONE && __LP64__) || TARGET_OS_WATCH typedef bool BOOL; #else typedef signed char BOOL; // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" // even if -funsigned-char is used. #endif #define YES ((BOOL)1) #define NO ((BOOL)0)

-_-
08.02.2017
13:20:20
Так, а почему в вопросе с блоком в первом случае 2, а во втором 1?

F
08.02.2017
13:21:01
q210
08.02.2017
13:21:03
адрес переменной a меняется после объявления блока

F
08.02.2017
13:21:06
можно писать и под нон-арк

-_-
08.02.2017
13:21:34
адрес переменной a меняется после объявления блока
Я о чем-то таком и подумал, а почему это произошло?

F
08.02.2017
13:21:35
адрес переменной a меняется после объявления блока
разве меняется? просто еще один указатель на а

Alfred
08.02.2017
13:21:40
резултат не всегда 1, зависит от мрц или арц

F
08.02.2017
13:22:01
тут дело в __block

надо знать как под капотом работает этот модификатор

Alfred
08.02.2017
13:22:21
но насчет мрц хрен с ним, можно просто попытаться понять почему 1

q210
08.02.2017
13:22:33
__block переменные могут переезжать со стека в heap

-_-
08.02.2017
13:22:48
Епт. После блока что, копия a создается?

q210
08.02.2017
13:22:49
думаю в этом случае так и происходит

не копия, переменная перемещается в памяти

-_-
08.02.2017
13:23:25
да вот дебаггер говорит о другом

q210
08.02.2017
13:23:26
*значение переменной

ну старый адрес не очищается сразу, что логично

Google
q210
08.02.2017
13:23:51
потому по старому адресу по прежнему будет 0

-_-
08.02.2017
13:23:55




Dmitriy
08.02.2017
13:24:40
Епт. После блока что, копия a создается?
пропробуй этот пример) на 4s симуляторе и на 7 ифоне

bool b1 = 2; if (b1) printf("REAL b1 \n"); if (b1 != true) printf("NOT REAL b1 \n"); BOOL b2 = 2; if (b2) printf("REAL b2 \n"); if (b2 != YES) printf("NOT REAL b2 \n");

результаты будут разные)

тоже можно считать каверзным)

пока что)

до выхода 64 битной архитектуры - это тоже было каверзным)

хотя кажется и банальным)

Alfred
08.02.2017
13:26:32
Епт. После блока что, копия a создается?
во так вот. а в мрц нет. почему?

Если распечатать [block class] в мрц и арц будут разные классы

Dmitriy
08.02.2017
13:27:17




-_-
08.02.2017
13:28:12
Ну, если честно, инициализировать BOOL двойкой вообще не самая лучшая идея

Dmitriy
08.02.2017
13:28:49
в 64 битной архитектуре - пофиг как

там будет 1

в 32 битной - там хранится число)

то, которое задаешь

-_-
08.02.2017
13:29:32
Я понимаю) Просто имхо лучше вообще так не делать

Google
Dmitriy
08.02.2017
13:29:44
на собесеовании спросят что будет на выходе

а не лучше или хуже)

Ilkhom
08.02.2017
13:30:13
Dmitriy
08.02.2017
13:30:35
ну да) но тут же ща тема о собеседованиях) и что спрашивают

кстати)

раз тоже попал на вопрос

Alfred
08.02.2017
13:30:41
тут больше вопрос о знании работы компилятора
это не компилятор. это sdk, и его дефайны

Dmitriy
08.02.2017
13:30:59
создают NSDate *date = .... ну и инициализирует 00:00

выводят в консоль - разница в 4 часа с тем, которое ввели

почему?

откуда 4 часовая разница?)

-_-
08.02.2017
13:31:21
на собесеовании спросят что будет на выходе
А примут ответ «не надо так делать»? :DD

q210
08.02.2017
13:31:29
UTC vs local time

-_-
08.02.2017
13:31:31
Dmitriy
08.02.2017
13:31:33
-_-
08.02.2017
13:31:48
Ну вот, выше ответили

Dmitriy
08.02.2017
13:31:50
UTC vs local time
а почему 4 часа? у меня +2 гмт

q210
08.02.2017
13:32:09
у меня разница в 3 часа

потому что у меня +3 гмт

это человек живёт в +4 видимо

Google
Dmitriy
08.02.2017
13:32:29
так почему 4 часа было?

нет, человек был в моей комнате и тест на моем устройстве был)

Eduard
08.02.2017
13:33:17
на симе?

Dmitriy
08.02.2017
13:33:23
ага

Eduard
08.02.2017
13:33:38
ну так там по дефолту регион us

Dmitriy
08.02.2017
13:34:01
а у юс какой гмт? +/-4?

-_-
08.02.2017
13:34:15
NSDate *date = [NSDate new]; // сейчас 16:33 Printing description of date: 2017-02-08 13:33:37 +0000

Вроде все правильно. UTC+3, как у меня и должно быть

Dmitriy
08.02.2017
13:35:41
ну вот было 4 часа разницы) ток там не через текущую дату инициализировали, а просто как 00:00 часов

оно возвращало в нслог 20:00

-_-
08.02.2017
13:36:03
Через дата форматтер?

q210
08.02.2017
13:36:10
хм

у проекта есть default Time Zone

которая используется при отдаче времени

Dmitriy
08.02.2017
13:36:26
возможно, но часовых поясов в задании и таймзон не указывали)

бо я бы за это тоже ухватился

я просто реально не мог обьяснить число 4)

почему именно 4, и у себя переодически я с таким тоже сталкивался, когда с датами работал

-_-
08.02.2017
13:40:02
Ну так а правильный ответ тебе не сказали? (:

Dmitriy
08.02.2017
13:41:02
неа)

Alfred
08.02.2017
13:41:21
может он там подсвизлил

Страница 571 из 2351