-
- Делай так Саня(75 знак., 10.10.2012 13:45)
- я знаю как делать. Вопрос был в том что, на беглый вгляд указанная строка кажется корректной но таковой не является. Буду читать маны - авось что еще интересного найду, а то в K&R не встречал упоминания об этой особенности. - MegaJohn(10.10.2012 13:50)
- Об неоднозначности многократного применения операций инкремента/декремента в выражении явным образом везде написано. Читаешь значит не ту литературу. Да и оно в общем-то очевидно: порядок вычисления выражения же явно не определён, он зависеть fk0(281 знак., 10.10.2012 15:31)
- с функциями то вкурсе про всякие stdcall cdecl. Но фигле процессор сюда примешиваешь ? - MegaJohn(10.10.2012 16:03)
- Не в порядке передаче аргументов дело, а в порядке их вычисления, он неопределён. Процессор тащу не по делу. Но принцип тот же: "оно само как-то считает и программа -- ни разу не _последовательность_ инструкций, а лишь набор правил для получения fk0(23 знак., 10.10.2012 16:16)
- порядок передачи аргументов определяет порядок вычисления - MegaJohn(10.10.2012 16:28)
- А порядок вычисления НИЧТО НЕ ОПРЕДЕЛЯЕТ и он будет такой, как удобнее компилятору на данной платформе, при данной фазе луны и данной погоде на марсе. - fk0(10.10.2012 18:18)
- Хватит позориться. Ты бы хоть в справочник заглянул сначала. SciFi(162 знак., 10.10.2012 16:33)
- Точнее, стандарт языка описывает последовательность действий "абстрактной машины" (за исключением undefined behaviour). В реальной машине SciFi(184 знак., 10.10.2012 16:21)
- порядок передачи аргументов определяет порядок вычисления - MegaJohn(10.10.2012 16:28)
- Не в порядке передаче аргументов дело, а в порядке их вычисления, он неопределён. Процессор тащу не по делу. Но принцип тот же: "оно само как-то считает и программа -- ни разу не _последовательность_ инструкций, а лишь набор правил для получения fk0(23 знак., 10.10.2012 16:16)
- с функциями то вкурсе про всякие stdcall cdecl. Но фигле процессор сюда примешиваешь ? - MegaJohn(10.10.2012 16:03)
- Об неоднозначности многократного применения операций инкремента/декремента в выражении явным образом везде написано. Читаешь значит не ту литературу. Да и оно в общем-то очевидно: порядок вычисления выражения же явно не определён, он зависеть fk0(281 знак., 10.10.2012 15:31)
- я знаю как делать. Вопрос был в том что, на беглый вгляд указанная строка кажется корректной но таковой не является. Буду читать маны - авось что еще интересного найду, а то в K&R не встречал упоминания об этой особенности. - MegaJohn(10.10.2012 13:50)
- проверил на компиляторе для IAR for AVR(8бит) IAR for ARM-CM3(32бита) и MSVC for x86(32бита) - результат не зависит от битности и трабла в инкременте указателя после вычисления. На CodeWarrior для FreeScale MSxxxx дает корректный результат. MegaJohn(113 знак., 10.10.2012 11:57)
- Если программу переписать на ассемблере, то она будет работать лучше и быстрей... a=0, p=str; do a=a*10+*p-'0'; while(*++p); - fk0(10.10.2012 11:56)
- Не надо умничать. a = 10 * (*p++ - '0'); a += (*p - '0'); - SciFi(10.10.2012 11:59)
- А где гарантия, что там будет "09". а не "9" ? - fk0(10.10.2012 12:21)
- Или "09", а не "XY"? За гарантиями - в росгосстрах. А аффтару нужен sscanf, это да. - SciFi(10.10.2012 12:48)
- А где гарантия, что там будет "09". а не "9" ? - fk0(10.10.2012 12:21)
- Не надо умничать. a = 10 * (*p++ - '0'); a += (*p - '0'); - SciFi(10.10.2012 11:59)
- Компилятор проинкрементировал p после вычисления a. Лень лезть в стандарт. amusin(84 знак., 10.10.2012 11:46)
- Это "undefined behaviour". Назад за парту. - SciFi(10.10.2012 11:44)
- бля, как задачи задают тип =p++++++с так составители маладцы - MegaJohn(10.10.2012 11:48)
- Код должен быть такой, чтобы "любая бабушка поняла" (с) не мой. - SciFi(10.10.2012 11:53 - 11:55)
- Не надо изобретать самодельной хреноты, где есть библиотечные функции. Например, atoi или scanf. Или strtoul. - fk0(10.10.2012 11:57)
- нука покажи как стандартными функциями сделать по ссылке последнее преобразование ?! - MegaJohn(10.10.2012 11:59, ссылка)
- Практически такая штука делается с помощью scanf. В зависимости от библиотеки (все тут говном поливают опенсоурс, но у них почему-то всё работает в соответствии с ISO, в отличии от коммерческих где масса чего не работает или работает через ()() и fk0(591 знак., 10.10.2012 13:26)
- этта, тут не 7бит, так что должно быть просто для профессионалов ! Так что ждем-ждем пример разбора приведенной строки на scanf - MegaJohn(10.10.2012 13:44)
- --> fk0(451 знак., 10.10.2012 15:54)
- а причем здесь HEX-string ? Пример строки и как декодируется я ссылку давал. Так что признай что твой sscanf в данной задаче нахер не нужен, и даже вреден - MegaJohn(10.10.2012 16:01)
- Я тогда не понял какой пример конкретно? В топике два твоих сообщений. Я про первое. Если про второе, то там скорей таки 7 бит. Но PDU всё равно передаётся в HEX. Только у тебя там непойми что. Давай PDU (AT+CMGF=0) и сразу видно будет. fk0(285 знак., 10.10.2012 16:19 - 16:22)
- ну ты американец MegaJohn(203 знак., 10.10.2012 16:31)
- Сам американец. Тебе модем выдал полную хреноту, ибо сам в CMFG=1 не смог в текст перевести. На CMGF=1 полагаться толком вообще нельзя. Принимай в PDU и всё сразу встанет на свои места. И вообще +CSCS установи для начала. Сразу говорю, надёжный fk0(397 знак., 10.10.2012 18:24)
- 1. у меня телит. CSCS установлен как GSM - так как только английский текст и в твоей любимой ТЕРМИНАЛКЕ можно логи смотреть. Сдается мне, что модем в тако случае выдает только AZaz09 - MegaJohn(10.10.2012 18:52)
- В случае +CSCS="GSM" ты не можешь во-первых интерпретировать некоторые символы (например, '$' или'@'), во-вторых нормально работать с C-строками вообще (там '@' -- код 0!) И не надо ухмыляться при слове "терминалка". Это лишь способ отображения fk0(588 знак., 10.10.2012 22:50 - 23:00, ссылка)
- >>только AZaz09 А остальные символы с кодом меньшим 128 не выдаёт что ли? - Apтём(10.10.2012 19:14)
- Если ещё не догнал, то смотри табличку GSM-алфавита. Он ни разу не ASCII во-первых, во-вторых символы с кодами 0..31 никто не отменял. Можешь конечно сказать, мол модем уже перевёл из GSM в ASCII (но зачем-то выдаёт в десяточном виде). Но тогда fk0(102 знак., 10.10.2012 18:35, ссылка)
- 1. у меня телит. CSCS установлен как GSM - так как только английский текст и в твоей любимой ТЕРМИНАЛКЕ можно логи смотреть. Сдается мне, что модем в тако случае выдает только AZaz09 - MegaJohn(10.10.2012 18:52)
- Сам американец. Тебе модем выдал полную хреноту, ибо сам в CMFG=1 не смог в текст перевести. На CMGF=1 полагаться толком вообще нельзя. Принимай в PDU и всё сразу встанет на свои места. И вообще +CSCS установи для начала. Сразу говорю, надёжный fk0(397 знак., 10.10.2012 18:24)
- ну ты американец MegaJohn(203 знак., 10.10.2012 16:31)
- Я тогда не понял какой пример конкретно? В топике два твоих сообщений. Я про первое. Если про второе, то там скорей таки 7 бит. Но PDU всё равно передаётся в HEX. Только у тебя там непойми что. Давай PDU (AT+CMGF=0) и сразу видно будет. fk0(285 знак., 10.10.2012 16:19 - 16:22)
- а причем здесь HEX-string ? Пример строки и как декодируется я ссылку давал. Так что признай что твой sscanf в данной задаче нахер не нужен, и даже вреден - MegaJohn(10.10.2012 16:01)
- Кстати, шутки-шутками, а иногда невредно и изобрести что-то своё sscanf-подобное, если приходится разбирать много специфических строк. - SciFi(10.10.2012 15:11)
- --> fk0(451 знак., 10.10.2012 15:54)
- этта, тут не 7бит, так что должно быть просто для профессионалов ! Так что ждем-ждем пример разбора приведенной строки на scanf - MegaJohn(10.10.2012 13:44)
- Практически такая штука делается с помощью scanf. В зависимости от библиотеки (все тут говном поливают опенсоурс, но у них почему-то всё работает в соответствии с ISO, в отличии от коммерческих где масса чего не работает или работает через ()() и fk0(591 знак., 10.10.2012 13:26)
- нука покажи как стандартными функциями сделать по ссылке последнее преобразование ?! - MegaJohn(10.10.2012 11:59, ссылка)
- Код должен быть такой, чтобы понял любой компилятор :) - GDI(10.10.2012 11:57)
- Не надо изобретать самодельной хреноты, где есть библиотечные функции. Например, atoi или scanf. Или strtoul. - fk0(10.10.2012 11:57)
- Так ведь вся соль в том, что "покупаем или продаем", "шашечки или ехать" :-) - amusin(10.10.2012 11:54)
- Код должен быть такой, чтобы "любая бабушка поняла" (с) не мой. - SciFi(10.10.2012 11:53 - 11:55)
- бля, как задачи задают тип =p++++++с так составители маладцы - MegaJohn(10.10.2012 11:48)
- А что за предупреждение? Вообще то проще нужно быть, код и потянется. - Vladimir Ljaschko(10.10.2012 11:38)
- отредактировал. проверил в MSVC2010 тоже 77 но без варнингов (либо не включены) - MegaJohn(10.10.2012 11:43)
- Делай так Саня(75 знак., 10.10.2012 13:45)