Отговори на тема  [ 62 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща
Фрагменти от С-то.... 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Zdrav написа:
Ми много просто. Щото output ти е параметър подаван на функция. Ако не е указател или референс резултата който си получавал е логичен. И... пак ли опираме до сбъркан стандарт или...


Е, айде стига, да не се изхвърляме толкова много....
Не помня какво точно съм бил написал, може и моя грешка да е било, няма сега да седна да я възпроизвеждам я.


Вто Юни 21, 2011 2:53 pm
Профил ICQ WWW
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Ама аз все пак не разбрах какво очакваш да се случи, когато ползваш нещо което не е указател вместо указател :D Освен непредвидимо омазване, разбира се


Вто Юни 21, 2011 3:03 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
setoy написа:
Ама аз все пак не разбрах какво очакваш да се случи, когато ползваш нещо което не е указател вместо указател :D Освен непредвидимо омазване, разбира се


Не, не беше написана така. Стойността на output се присвояваше директно на глобална променлива.


Вто Юни 21, 2011 3:08 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Бе той Цецо ви каза.

А от мене пък за езиците от високо ниво и писането на романи ползвайки разговорник - вие
си го знаете ама това тук го илюстрира нелошо :D :D :D .

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Юни 21, 2011 3:45 pm
Профил WWW
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 01, 2009 8:50 am
Мнения: 125
Местоположение: Varna
Мнение 
Цецо написа:
Това програмистите сте много сбъркани, от мен да го знаете :) Ебати темата, ебати дискусията :)


Еми сбъркани сме :? ти знаеш ли някой нормален човек в неделя да седне да чете блокове от код, и очите му да изтичат денонощно по монитора....

И това ако не е сбъркано, здраве му кажи..... :lol: :lol:

_________________
http://truna.freehosting.bg/
форум за механици..
"Любителска електроника" не означава скапана а означава с много любов правена..

Ако можеше да се съберат техническият отдел на atmel и маркетинговият отдел на microchip, ще се получи нещо велико.


Вто Юни 21, 2011 5:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
tgi написа:
А от мене пък за езиците от високо ниво и писането на романи ползвайки разговорник - вие
си го знаете ама това тук го илюстрира нелошо :D :D :D .


Е, не е точно така. Ако успее човек да си изчисти стила на програмиране, какъвто смея да твърдя, че имам, нещата се нареждат.
Това обаче, че даден език ти позволява разни неща, съвсем не означава, че трябва да ги прилагаш. Ама то си има книги за тея неща. Ама няма кой да ги чете.

А на тея, дето се дракат за Паскала, което въобще нямаше място в тая тема мога да им кажа, че на Си се пише по-лесно. На Паскал обаче се пише подредено. /Е, то зависи от драскача де, и на Си може./ И не ти е позволено да пишеш щуротии от сорта на:


Код:
for (i=0,j=0;;)
      {
        if ((Text[i]==' ')&&(Text[i+1]==' ')&&(Text[i+2]==' '))
          {
          for (k=i,i+=3; i<TERMO_CHP; i++)
            if ((Text[i]==0)||(Text[i]!=' ')) break;
          PrBuffer[PrHeadT].Text[j++]=REPEAT_FLAG;
          PrBuffer[PrHeadT].Text[j++]=i-k;
          }
        else
          {
          PrBuffer[PrHeadT].Text[j++]=Text[i++];
          if (i>=TERMO_CHP) break;
          }
      }


Вто Юни 21, 2011 5:45 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Колко трактати за сравнение между разговорници има написани не е за вярване,
най-вече май за между C и Паскал (че там разликата била толкова голяма, ROFL).

:D :D :D

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Вто Юни 21, 2011 6:03 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
Ей това се добавя в "Command line options:" и нещата стават както трябва:

--diag_error=Pe174

:wink: :wink: :wink:


Вто Юни 21, 2011 6:35 pm
Профил ICQ WWW
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение 
miro_atc написа:
Никога не забравяйте, че:
Код:
if(a == foo())
и
Код:
if(foo() == а)

са два различни изриза и могат да дадат различен резултат, защото в единия случай се взема стойността на "а" преди, в е другия случай стойността след викане на функцията.


За илюстрация - става.
Ако съществува реален код с такава пиратка вътре - програмера е за убийство. Най-вече ако кода е чужд.

edit: Имах предвид и няколкото поста около цитирания - с разните му там промени на а в прекъсвания.


Последна промяна tolstolob на Вто Юни 21, 2011 9:14 pm, променена общо 1 път



Вто Юни 21, 2011 8:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 26, 2005 2:01 pm
Мнения: 1952
Местоположение: Варна
Мнение 
relsys написа:
Е, айде стига, да не се изхвърляме толкова много....

А сори аз съм се объркал мислех, че ти заговори за принципно сбъркани неща в С по повод на някакво дребно проблемче, което не беше решил. Сега виждам, че си намерил решение. Значи от темата е имало все пак някаква полза. Няма да се изхвърляме и ще те оставим да замажеш некомпетеността си. Айде дерзай с ученето ;)

_________________
Най-опасният враг на истината и свободата е мнозинството.


Вто Юни 21, 2011 9:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
tolstolob написа:
miro_atc написа:
Никога не забравяйте, че:
Код:
if(a == foo())
и
Код:
if(foo() == а)

са два различни изриза и могат да дадат различен резултат, защото в единия случай се взема стойността на "а" преди, в е другия случай стойността след викане на функцията.


За илюстрация - става.
Ако съществува реален код с такава пиратка вътре - програмера е за убийство. Най-вече ако кода е чужд.

edit: Имах предвид и няколкото поста около цитирания - с разните му там промени на а в прекъсвания.


Абе най-добре научете добре С-то, щото като (ако) минете на С++ и шаблони ще ви се стъжни живота ;-) Там не знаете дали работите с константа или променлива, дали кодът ще се изпълни run time или compile time. Можете да опишете чист алгоритъм, без да е ясно къде, как и за какво ще се ползва. (това tqi да не го чете, че може да получи инфаркт...) :D

Та затова не свиквайте с мисълта, че еди какво си било константа, че и в двата записа резултата ще е един и същ и прочие. Може и да дават един и същ резултат, но това са два различни алгоритъма!!!
В единия се казва "извикай foo() и получения резултат го сравни с а". В другия случай се казва "запомни а, после извикай foo(), после сравни резултата със запомненото.

Добрият стил означава да пишеш точно както описваш на глас алгоритъма си. И когато четеш чужд код да го четеш точно както е записан.


Вто Юни 21, 2011 10:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 03, 2005 9:39 pm
Мнения: 2277
Мнение 
@miro_atc
На глас - ако а е равно на резултата от изпълнението на foo() или ако резултата от изпълнението на foo() е равен на а. Поне в случая няма значение кое от двете ще се ползва - ефектът е един и същ. Ако трябва да сравним две неща - правим го, ако трябва да разчитаме на странични ефекти - ... не знам, не бих постъпил по този начин.


Вто Юни 21, 2011 10:30 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение 
Какъв ще е този алгоритъм, който крашва при криво аранжиран "if"? :?


Вто Юни 21, 2011 10:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
tolstolob написа:
Какъв ще е този алгоритъм, който крашва при криво аранжиран "if"? :?


Ми примерно ако съчетаеш итератор и модификатор в един иф. То по принцип стандартните шаблони не случайно са направени с void модификатори, тъй че да не се стига до подобни ситуации...

Но решения всякакви, даже аз също често се изкушавам с non-void модификатори. Примерно queue.pop() ми връща резултат, тъй че ако не се замислиш лесно може да стигнеш до нещо от сорта if(queue.begin == queue.pop()), Очевадно в случая има голямо значение кое е от ляво и кое от дясно ;-)


едит: всъщност аз реално имам такъв шаблон в ос-а си. Хем знам че модифакор като pop() е редно да си е void, ама ето на... не съм се замислил и по навик съм го направил като С ;-)


Вто Юни 21, 2011 10:44 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 01, 2009 8:50 am
Мнения: 125
Местоположение: Varna
Мнение 
В параметричните скоби първо се определя върнатият резултат, тоест първо се викат една по една функците който ще върнат резултат, резултата от всяка функция който бива върнат се записва в условието...

Във С няма тип бул той е сложен чак на СИ++, така че във си функциите връщат цялочислени стойности, като стойност по голямо от 1 се смята за вярно, стойност 0 или -нещо си се смята за лъжа..


А това дали трябва да се ползват модификатори в условни конструкции, и дали върху модификатори могат да се прилагат логически оператори.

Ако функцият връща резултат могат да се ползват логически оператори..
Само трябва да се внимава, повечето логически оператори са дясно асоциативни..

Най добрият случай е първо модификаторите да върнат резултата в променлива, и променливата да се подаде на логическият блок..


Код:
var1 = Funinit();
var2 = exsist();
var3 = Blablabla();



if(  (var1 <= var3)  == var2  )


Това е най добрия случай, първо данните да бъдат променени "модифицирани", и после подложени на логически операции..
за сметка на леко забавяне в кода...

_________________
http://truna.freehosting.bg/
форум за механици..
"Любителска електроника" не означава скапана а означава с много любов правена..

Ако можеше да се съберат техническият отдел на atmel и маркетинговият отдел на microchip, ще се получи нещо велико.


Сря Юни 22, 2011 7:42 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 62 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни