- 1
#define ISODD( i ) ( (((i) % 2) == 0) ? 0 : 1 )
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+145
#define ISODD( i ) ( (((i) % 2) == 0) ? 0 : 1 )
Особо выдающимся китайцам платят не построчно, а посимвольно.
Govnoeb 17.11.2010 14:07 # +1
#define ISEVEN( i ) ( (((i) % 2) == 0) ? 1 : 0 )
то плюсанул бы
nil 17.11.2010 14:09 # 0
AxisPod 17.11.2010 14:24 # 0
#define NINE 8 + 1
#define SIX 1 + 5
#define MUL (a, b) a * b
int res = MUL(SIX, NINE);
Автор, как думаешь, какой будет результат? Будет 42, а не 54.
Делаем
#define NINE (8 + 1)
#define SIX (1 + 5)
и получаем 54, но
int res = MUL(1+5, 8+1);
тут уже от компилятора зависит, но опять же можем получить 42, делаем
#define MUL (a, b) (a) * (b)
и вот тут работает нормально.
nil 17.11.2010 14:52 # 0
nil 17.11.2010 15:03 # +1
AxisPod 17.11.2010 15:10 # 0
TarasB 17.11.2010 15:05 # 0
Нормально было бы так:
#define ISODD( i ) ( (i) % 2) // К.О.
absolut 17.11.2010 14:53 # −1
nil 17.11.2010 15:03 # −1
absolut 17.11.2010 15:09 # +2
nil 17.11.2010 15:15 # 0
TarasB 17.11.2010 15:21 # 0
andremacareno 17.11.2010 22:46 # +1
Мне мобильник выдал -1, калькулятор виндовый (на компе с амд атлон64) выдал 1.
TarasB 17.11.2010 23:22 # 0
Что остаток неотрицательный.
У меня из-за этого некоторые проблемы с арифметикой фиксированной точки возникли (ну и из-за дубовости компилятора Д7), я даже срач на гамедев.ру устроил был по этому поводу.
Oleg_quadro 23.11.2010 23:29 # 0
istem 18.11.2010 01:58 # 0
У Вас компилятор Си встроеный?.. А что за модель телефона?
nil 18.11.2010 02:04 # 0
andremacareno 18.11.2010 10:00 # +1
Oleg_quadro 23.11.2010 23:28 # 0
должно быть так ведь?:
С * B + D = A
=====
смотрим.
-3 / 2 = -1, -1
-1 * 2 + (-1) = -3
-3 / 2 = -1, 1
-1 * 2 + 1 = -1
=======================
Но может я не прав? Не утверждаю, что я 100%-но прав.
Может правило звучит так: не "остаток меньше частного", а "модуль остатка меньше меньше модуля частного"?
TarasB 24.11.2010 10:21 # 0
Лол, а продлить лестничный график взятия неполного частного и посмотреть, что будет, трудно разве?
-3/2 = -2;1 (потому что [-1.5] = -2)
-3 = -2*2 + 1
остаток по правилам математики должен быть положителен.
Этим достигается периодичность функции взятия по модулю, что иногда очень удобно.
Oleg_quadro 24.11.2010 23:40 # 0
xXx_totalwar 25.11.2010 19:27 # 0
Oleg_quadro 26.11.2010 00:16 # +1
Вспомнил потом, что ещё в школе нам это говорили.
xXx_totalwar 26.11.2010 10:26 # −3
в школе говорили..
что еще в школе говорили? что луна из сыра, а в совке лучшее образование в мире?
TarasB 26.11.2010 10:45 # −2
Кстати, про луну из сыра там не говорили.
xXx_totalwar 26.11.2010 14:20 # −1
>авторитеты
это понятие того же качества, что и незабвенный миллион мух, просто нужно уметь разделять их "по качеству", кое-кто умеет, кое-кто готов раздвигать булки по первому требованию перед каждой швалью, назвавшейся авторитетным математиком; и в этом они схожи с рабами: мнение иметь не могут, нет такого права у рабов "авторитетов".
TarasB 26.11.2010 14:53 # −1
Аааааа, жги ещё!!!!1111
nil 26.11.2010 14:47 # +1
xaionaro 26.11.2010 18:14 # 0
nil 26.11.2010 18:40 # 0
xaionaro 26.11.2010 22:26 # 0
Однако если идти по принципу бритва Оккама, то тому что Луна состоит не из сыра имеется тонна подтверждений.
Я понимаю, что я говорю очевидные вещи, но коли вопрос задан не в риторической форме, вынужден ответить :)
nil 26.11.2010 23:26 # 0
Лично я не спорю, что в своих построениях о составе Луны буду скорее руководствоваться общепринятой гипотезой. Но ничуть не расстроюсь, если вдруг нас глобально наебут и она-таки окажется из сыра.
xaionaro 27.11.2010 00:42 # 0
bugmenot 26.11.2010 20:12 # +3
xaionaro 26.11.2010 22:29 # 0
bugmenot 27.11.2010 15:06 # 0
Особые права - звучит фантастично, они конечно могут об этом сколько угодно мечтать, пока китайцы строят обогатительный комбинат
nil 27.11.2010 15:27 # 0
xaionaro 27.11.2010 17:15 # +1
Так и вижу, как испанские астронавты устанавливают свой флаг на поверхности Солнца))
TarasB 28.11.2010 13:00 # +3
bugmenot 28.11.2010 22:47 # 0
bugmenot 28.11.2010 01:15 # 0
xaionaro 27.11.2010 17:15 # 0
Да понятно дело, что как того хотят американцы и как будет на самом деле - вещи не особо сильно коррелирующие. Да и тем более, что вообще, эта фишка про американцев - скорее всего тупо поспешное умозаключение моего бывшего препода))
bugmenot 28.11.2010 01:32 # 0
bugmenot 28.11.2010 01:36 # 0
xaionaro 28.11.2010 12:39 # 0
Не понял вопроса. "Astra" - "звезда" на греческом. По значению слова астронавт == космонавт.
bugmenot 28.11.2010 22:28 # 0
nil 28.11.2010 22:34 # 0
xaionaro 30.11.2010 08:23 # 0
Ну если фантазировать, то всем давно известно, что в рамках теории струн допустимы червоточены.
Однако если вернуться к термину "астронавт", то чем он вам не нравится? Да, даже до ближайщей звезды ещё никто из нас, насколько известно, не долетал, однако термин вообще говоря литературный и устоявшейся, и применяемый с тем же смыслом, что и слово "космонавт":
http://ru.wikipedia.org/wiki/Астронавт
xaionaro 30.11.2010 08:30 # 0
человек, совершивший космический полёт на корабле советского или российского производства, - космонавт;
человек, совершивший полёт на американском космическом корабле, - астронавт;
человек, летавший на китайском космическом корабле, - тайконавт (от тайкун (кит. , пиньинь 太空 — космос) и наута (греч. ναυτα) — мореплаватель).
bugmenot 30.11.2010 14:44 # +1
> червоточены
червоточины
> С википедии
Из википедии
re: бессмысленная и беспощадная копипаста из педивикии -- зная тамошнее сообщество, можно с закрытыми глазами сказать, что у них написана какая-то поебень. Устоявшийся термин предлагаю лóжить туда же. И озадачиться неконструктивным вопросом, кем же будет являться китаец, поднявшийся на орбиту в советском КА для последующего участия в насовской программе.
С навтом еще хуже, потому что рикошетом ударит по навигациям и т.д. (см. в Циолковского о слове полет)
А насчет суперструн мне кажется излишне смело надеяться на удобно возникшие полезные аномалии. Ненаучно, нет?
nil 30.11.2010 14:57 # +3
Некропедозоофил - это не некрозоопедофил!
xaionaro 30.11.2010 22:12 # 0
По поводу слов "космонавт" и "астронавт", я согласен с вами, что слово "космонавт" является более логичным, однако у меня просто на автомате американский космонавт проассоциировался со словом "австронавт", после чего вы отреагировали так, будто впервые услышали это слово. В результате чего, я попытался объяснить, что, вообще говоря, оно является вполне общеупотребимым. Однако я не настаиваю на его использовании, просто был удивлён вашей реакции.
Если говорить про теорию супенструн, я не понял вашу мысль. На какие именно аномалии намёк? Если про червоточины, то я же сказал "если фантазировать", причём тут "надежда на удобно возникшие аномалии". Тем более не надо недооценивать теорию струн... нет, даже не так. Не надо недооценивать пространство-время в котором мы живём. IMHO, оно порядком сложнее чем мы даже можем представить на нашем текущем этапе развития. Например, если задуматься о спутанных состояниях или необходимости расщипления реальностей для решения некоторых парадоксов. Сразу невольно кажется, что даже червоточины - мелочь в сравнении с тем, что на самом деле умеет природа. Я всё это к тому, что надеяться лишь на червоточины - это скорее даже слишком скромно, IMHO
xaionaro 30.11.2010 22:33 # 0
bugmenot 01.12.2010 14:52 # 0
xaionaro 01.12.2010 18:54 # 0
А вообще жаль. Интересно было бы узнать, что вас не устраивает в теории суперструн.
bugmenot 01.12.2010 19:59 # 0
если бы... с включённым жабьим скриптом всё это делается с помощью XMLHttpRequest написанным на коленке скриптом, который иногда наедается и херит коммент.
про суперструны - если коротко, считаю суперструны красивым умозрительным построением, которому если и суждено покинуть сферы чистой науки - то нескоро.
с другой стороны суровая реальность в виде принципа эквивалентности, которая ограничивает практические скорости КА десятыми c.
кстати, червоточины, будучи обыденным явлением уничтожат космонавтику в нынешнем виде. всё сведется к будочкам и автоматическому зонду который их устанавливает.
xaionaro 04.12.2010 08:34 # 0
Я тут не так давно общался с одним своим знакомым и немного изменил своё мировозрение по данным вопросам.
Стоит начать с того, что вообще некорректно говорить столь строго о скорости, т.к. нельзя корректно говорить о конкретной координате пространства и времени. Я вообще считаю что у нас введена принципиально неверная математика для описания природы. Повторюсь ещё раз более конкретно, наша математика при описании природы опирается на понятие "точка в пространстве-времени", что вообще говоря бездоказательно и как мне кажется, неверно. В таком подходе, ограничение в скорость света тоже выглядит немного эфемерно. Просто в макроскопическом приближении, как известно, законы ОТО хорошо работают. Если представить себе наш мир весовой суперпозицией бесконечного количества вариантов Вселенных в каком-то новом понимании (не привязываясь к точке), которые между друг другом взаимодействуют, в которых существует эффект квантовой сцепленности и которые насквозь все повсюду пронизаны бесчисленных количеством экранированных червоточин, то тогда думаю проблемы вызываемыми ограничением в скорость света станут казаться намного менее заметными :). Естественно, межде чем появится достаточная математика, чтобы достаточно понять ту же теорию струн, или чтобы придумать новую формулировку пространства-времени нам предётся работать ещё фиг знает сколько лет. И неизвестно ещё как оно всё есть на самом деле, но я, естественно, как и, наверное, все остальные очень надеюсь, что слово "астронавт" будет когда-нибудь использоваться по его прямому значению исходя из перевода с греческого.
А по поводу червоточин, опять же в рамках теории струн было посчитано, что если эти червоточины существуют, то они автоматически экранируются бранами. Т.е. воспользоваться ими в рамках данной теории, чрезвычайно сложно, если вообще возможно.
xaionaro 04.12.2010 08:34 # 0
bugmenot 04.12.2010 10:42 # 0
bugmenot 04.12.2010 10:55 # 0
ctm 29.11.2010 08:47 # 0
у Японии - на Курилы
таких много...
absolut 29.11.2010 09:43 # +1
ctm 29.11.2010 10:30 # 0
еще есть Пакистан - Индия, Израиль - Сирия, Грузия - Абхазия и Осетия (ну это тоже близко к нам), много других.
xXx_totalwar 25.11.2010 19:28 # +2
может у тебя какая-то своя математика? а то в мировой это неоднозначность.
TarasB 26.11.2010 10:44 # 0
ctm 26.11.2010 12:30 # +1
аналогичная проблема с округлением. кому-то нужно математическое (причем может быть к ближ. целому, к меньшему или большему, большему по модулю), кому-то банковское (когда случай с 0.5 до ближайшего четного).
xXx_totalwar 26.11.2010 12:36 # 0
в общем, все уже понятно - совковый хлам, но прочитаю реверансы:
вот оно что - говно, взращенное на совковом, невелика разница
TarasB 26.11.2010 12:45 # 0
nil 26.11.2010 12:47 # 0
Но... при чем тут Лужков?
andremacareno 27.11.2010 19:23 # 0
bugmenot 26.11.2010 13:49 # 0
andremacareno 27.11.2010 15:35 # 0
xXx_totalwar 17.11.2010 14:54 # +8
байтоебы cannot into i&1
ctm 17.11.2010 15:10 # +1
pushkoff 17.11.2010 20:29 # +1
выглядело это так
i/2 = int(i/2) (Pascal)
bugmenot 17.11.2010 21:10 # 0
sanchousf 18.11.2010 11:43 # 0
(i and 1) = 1
andremacareno 17.11.2010 22:43 # 0
da4ever 17.11.2010 23:19 # 0
лиспокод детектед!
xaionaro 17.11.2010 23:38 # 0
TarasB 17.11.2010 23:39 # −4
absolut 17.11.2010 23:44 # +4
xaionaro 22.11.2010 21:00 # +1
Dummy00001 18.11.2010 00:33 # 0
если же использование (!!((i)&1)) допустимо, то любой нормальный компилятор умеет конвертить модуль/деление/умножение на степень двойки в битовую операцию.
nil 18.11.2010 00:54 # 0
Макрос называется ISODD — проверка на нечетность, на выходе что-то, что можно засунуть в условия. Если он будет выдавать 1 или 0 пофиг какой природы, то и замечательно. А вообще, результат будет целого типа, нет? Операнды точно целые должны быть, наверное, и результат тоже, лень в стандарт лезть.
Dummy00001 18.11.2010 01:44 # 0
влезь и увидишь что результат ((i)&1) имеет implementation defined тип. и стандарт не оговаривает в каком порядке биты идут.
в догонку. 0 и 1 есть целые константы (по стандарту без типа) поэтому :? принимает тип того целого типа который в контексте/выражении требуется. все остальные варианты реализации имеют некий конкретный тип.
в кратце: если ты встроенные платформы не программируешь, то ISODD можно и по другому сделать. но если лезешь в экзотические платформы, то там нужно временами быть аккуртным с типами.
итого. я бы делал (!!((i) % 2)). и С++ доволен. и С89 - и С99 тоже. в С89 это был бы int, C 99 - _Bool, C++ - bool. но и :? тоже почти во всех компилерах катит, имеет аналогичный результат и скорее всего аналогичный код.
nil 18.11.2010 02:03 # 0
А какая разница, как и куда идут биты? Что-то я не понял. Можно поподробнее здесь?
Dummy00001 18.11.2010 02:09 # 0
это к тому что любимое (i & 1) по стандарту не портабельно. least significant bit не обязан быть 0м.
> Влез, не увидел конкретно в описании этой операции (6.5.10). Наверное, рядом где-то общее правило.
нет общего правила. не ты первый искал - не ты первый кто не нашел :)
С работает с типами - char/short/int/long - в то время как битовые операции делаются на CPU регистрах и стандарт даже не пытается оговаривать что у тебя будет в результате.
nil 18.11.2010 02:20 # 0
xaionaro 23.11.2010 16:25 # 0
Вы - вроде опытный человек по другим комментам, поэтому спрошу осторожно. А именно, разве не пофиг нулевой ли "least significant bit" или нет? В двоичном компьютере число "1" всегда будет использовать тот бит, который отвечает за чётность, нулевой он или нет. Зарание извиняюсь за свою тупость, конечно.
Dummy00001 23.11.2010 16:47 # 0
я и сам буду рад если кто в стандарт тыкнет - я пару раз искал и не нашел.
С не налагает на процессор требований. он говорит что есть битовые операции &/|/етц и как они должны биты трансформировать. он же (стандарт) говорит что число как ты его видишь не обязательно так же в памяти/процессоре представляется. он же налагает требования как программа видит числа.
неопределенный порядок битов + неопределенный тип битовых операций дает что как бы по стандарту (i & 1) не обязано быть 0 для четных чисел.
я полагаю что стандарт не оговаривает порядок битов потому что в старые времена еще существовали архитектуры с big-endian порядком битов (именно битов, не байтов; сейчас все памяти little-endian).
должно быть монопенисуально - С оговаривает как программы видят чила - но тем не менее полностью все для случая (i & 1) не оговорено (в отличии от (i % 2)).
оно ИМО вдвойне монопенисуально должно быть потому что редкая архитектура отважится в этом месте как либо от класических реализаций отличатся - бо куча програм сразу перестанут работать.
еще раз: буду рад если кто в стандарт тыкнет. сам не полезу - по работе в него лажу уже более чем достаточно. кому интересно - на англиской википедии лежит линк на свободную последнюю версию стандарта.
xaionaro 23.11.2010 18:37 # +2
Ну я во всяком случае уверен, что неопределённый порядок битов сам по себе ничего не меняет, т.е. "&1" до сих пор должно работать для проверки на чётность, ибо данная операция будет выкалывать именно тот бит, который говорит о нечётности числа, где бы он не находился.
Например, пусть мы работаем с uint8_t. Так же пусть будет следующий порядок битов:
бит/значение:
0/32, 1/16, 2/1, 3/2, 4/4, 5/64, 6/16, 7/128
Тогда число десятичное "69" предстанет пред нами в виде: "00101100". В то время как число "1" предстанет перед нами как "00100000". Если я правильно всё понимаю, то операция "&" предполагает, что будет произведена логическая операция "И" между каждой парой соответствующих друг другу по разряду бит между обоими аргументами, откуда получается, что даже при таком порядке бит:
69&1 == 1 -- т.е. число нечётное
Несложно проверить, что это будет работать для любого числа
Мне для понимания очень помог бы пример (можно и чисто вымешленный), в котором не работал бы "&1".
> еще раз: буду рад если кто в стандарт тыкнет. сам не полезу - по работе в него лажу уже более чем достаточно. кому интересно - на англиской википедии лежит линк на свободную последнюю версию стандарта.
А я дак вообще физик, а не программист. И ниразу полностью ниодин из стандартов по Си не листал. Открываю только по большой надобности и в очень спорных ситуациях.
Dummy00001 23.11.2010 19:27 # 0
тоже вариант. с этой стороны я как бы раньше не думал.
"""А я дак вообще физик, а не программист. И ниразу полностью ниодин из стандартов по Си не листал."""
полистай - http://en.wikipedia.org/wiki/C_%28programming_language%29 - последний линк в секции "External links."
nil 24.11.2010 00:51 # 0
nil 18.11.2010 02:14 # 0
Да, для знаковых могут быть проблемы.