Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Programovanie ccs C

Programovanie ccs C

C,C++,C#

Moderátori: psichac, Moderátori

Programovanie ccs C

Odosla┼ąod niki31 » 16 J├║l 2019, 09:47

Chcem sa sp├Żta┼ą sk├║senej┼í├şch program├ítorov na jednu vec, oh─żadne porovn├ívania dvoch premenn├Żch. V ccs C som narazil na tak├Żto probl├ęm. Ak vytvor├şm podmienku kde sa porovn├ívaj├║ dve premenn├ę, jedna je znamienkov├í a druh├í neznamienkov├í, v├Żsledok porovnania je chybn├Ż. Pri porovnan├ş dvoch ─Ź├şsiel napr. 5 > 2 je v├Żsledok false. Je toto norm├ílne aj v in├Żch kompil├ítoroch alebo to je nejak├Ż kix? Ch├ípem ┼że z├íporne ─Ź├şslo by bolo vyhodnoten├ę ako v├Ą─Ź┼íie lebo m├í nastaven├Ż znamienkov├Ż bit ale dve kladn├ę ─Ź├şsla ? V ┼żiadnej u─Źebnici ani v manu├íli kompil├ítora sa o tom ni─Ź nep├ş┼íe.
Niki31
niki31
Obr├ízok pou┼ż├şvate─ża
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 87
Vek: 44.74
Zalo┼żen├Ż: 05.02.2010
Bydlisko: ┼Żilinsk├Ż kraj
Karma: 0

Re: Programovanie ccs C

Odosla┼ąod peterple » 16 J├║l 2019, 12:39

ve─żmi divn├ę. A┼ż priam ┼ítandartu odporuj├║ce. Ten hovor├ş ┼że v pr├şpade ┼że sa porovn├íva signed a unsigned tak sa signed pretypuje na unsigned. Tak┼że 5>2 mus├ş plati┼ą za ka┼żd├Żch okolnost├ş.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Programovanie ccs C

Odosla┼ąod maskrtnik01 » 16 J├║l 2019, 13:11

tak sa signed pretypuje na unsigned


A ─Źo to sprav├ş so znamienkom? Povedzme -5 > 2?
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1282
Vek: 22.76
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 6

Re: Programovanie ccs C

Odosla┼ąod niki31 » 16 J├║l 2019, 14:27

No je to divn├ę, doteraz som sa st├Żm nikde nestretol.
V┼żdy sa porovn├ívalo bez oh─żadu na typ premennej a fungovalo to. V c to nefunguje a h─żada┼ą furt tak├ęto chyby, to je z├í┼żitok.
U┼ż som si aj za─Źal p├şsa┼ą zoznam podobn├Żch vec├ş, lebo ich je tam viac.
Niki31
niki31
Obr├ízok pou┼ż├şvate─ża
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 87
Vek: 44.74
Zalo┼żen├Ż: 05.02.2010
Bydlisko: ┼Żilinsk├Ż kraj
Karma: 0

Re: Programovanie ccs C

Odosla┼ąod peterple » 16 J├║l 2019, 15:55

Niki: t├Żm som chcel poveda┼ą ┼że 5>2 by malo plati┼ą aj v tvojom kompil├ítore. To ┼że sa ti zd├í ┼że to neplat├ş znamen├í ┼że si nie─Źo prehliadol.

maskrtnik:
so znamienkom to neurob├ş ni─Ź. pretypovanie ni─Ź nemen├ş len hovor├ş kompil├ítoru ┼że pre t├║to chv├ş─żu sa na tento kus pam├Ąte pozeraj ako na cel├ę ─Ź├şslo bez znamienka. To znamen├í ┼że ak tam bude ─Ź├şslo -5 tak sa mu to bude zda┼ą ako UINT_MAX-5+1
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Programovanie ccs C

Odosla┼ąod maskrtnik01 » 16 J├║l 2019, 16:15

Toto som chcel vedie┼ą. ─îi to vynuluje, obr├íti polaritu na kladn├║......alebo to znamienko proste zoberie ako MSB uint-u.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1282
Vek: 22.76
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 6

Re: Programovanie ccs C

Odosla┼ąod niki31 » 16 J├║l 2019, 16:17

Laboroval som s t├Żm dva dni a nepodarilo sa mi zisti┼ą pre─Źo to rob├ş. Nakoniec som musel v celom programe pomeni┼ą typy premenn├Żch na unsigned.
Niki31
niki31
Obr├ízok pou┼ż├şvate─ża
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 87
Vek: 44.74
Zalo┼żen├Ż: 05.02.2010
Bydlisko: ┼Żilinsk├Ż kraj
Karma: 0

Re: Programovanie ccs C

Odosla┼ąod peterple » 16 J├║l 2019, 16:39

V tak├Żchto pr├şpadoch kuknem na vygenerovan├Ż asm a zvy─Źajne m├ím o chv├ş─żu jasno.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Programovanie ccs C

Odosla┼ąod niki31 » 16 J├║l 2019, 17:12

To je sice pravda ale ni─Ź to na veci nemen├ş. Je nemyslite─żn├ę laborova┼ą s ka┼żdou blbos┼ąou pol d┼ła a zvl├í┼í┼ą, ak sa v programe nach├ídza tis├şckr├ít.
Sk├┤r by ma zauj├şmalo ─Źi to nejde nejako prenastavi┼ą alebo ─Źo.
Niki31
niki31
Obr├ízok pou┼ż├şvate─ża
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 87
Vek: 44.74
Zalo┼żen├Ż: 05.02.2010
Bydlisko: ┼Żilinsk├Ż kraj
Karma: 0

Re: Programovanie ccs C

Odosla┼ąod maskrtnik01 » 16 J├║l 2019, 17:16

peterple nap├şsal:V tak├Żchto pr├şpadoch kuknem na vygenerovan├Ż asm a zvy─Źajne m├ím o chv├ş─żu jasno.

Ak asm rozumiete - nie ka┼żd├Ż to vie ─Ź├şta┼ą a ch├ípa┼ą.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1282
Vek: 22.76
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 6

Re: Programovanie ccs C

Odosla┼ąod peterple » 17 J├║l 2019, 21:49

─îo chce┼í prenastavi┼ą? Normu ako pracuj├║ kompil├ítory? St├íle nejak moc never├şm ┼że ten test 5>2 bol false. Inak dnes ka┼żd├Ż slu┼ín├Ż kompiler na tak├║ kon┼ítrukciu hod├ş varovanie. A ke─Ć som s C za─Źal tak som r├Żchlo zistil ┼że varovania sa nevyplat├ş bra┼ą na ─żahk├║ v├íhu. Ke─Ć sa niekomu C nep├í─Źi, tak tu m├í dnes mraky jazykov kde je cesti─Źka umeten├í. Java m├í v┼íetko signed. Javascript m├í double, a tak podobne. Ale v┼żdy je nie─Źo za nie─Źo. Za bezstarostn├Ż ┼żivot sa plat├ş. Cckar navy┼íe p├ş┼íuci pre MCU by mal vedie┼ą ako a pre─Źo to vo vn├║tri tak funguje.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1889
Vek: 52.74
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 52

Re: Programovanie ccs C

Odosla┼ąod pocitujlasku » 18 J├║l 2019, 09:23

maskrtnik: ak niekto programuje mcu v C, tak sa poklada za normalne, ze vie aspon trocha asm, lebo potom vie co sa deje vnutri
Intel, Nvidia, Ubuntu, Firefox, Asus, Nissan, Jelinek 52%, Metal
---------------------------------------------------------------------------------------------
Jedn├şm z nejv─Ťt┼í├şch projev┼» ned┼»v─Ťry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 4534
Vek: 36.46
Zalo┼żen├Ż: 20.07.2007
Bydlisko: Poprad
Karma: 18

Re: Programovanie ccs C

Odosla┼ąod Andy99 » 18 J├║l 2019, 09:50

Uz dlhsie sledujem tuto temu a neda mi to. Chapem, ze vysledok moze byt rozdielny ci uz vzavislosti od pouzitych typov premennych alebo aj nastavenia kompilatora. Ale zaujimalo by ma, ci by si nemohol ukazat cast toho kodu, ktora robi spominane problemy. S tym, ze tam bude vidiet definicia, inicializacia, pouzitie ako aj porovnanie danych premennych. :thumbup:
Andy99
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 304
Vek: 31.07
Zalo┼żen├Ż: 05.03.2008
Bydlisko: Bratislava
Karma: 20

Re: Programovanie ccs C

Odosla┼ąod maskrtnik01 » 18 J├║l 2019, 11:05

pocitujlasku nap├şsal:maskrtnik: ak niekto programuje mcu v C, tak sa poklada za normalne, ze vie aspon trocha asm, lebo potom vie co sa deje vnutri


Tak aritmetiku od skoku e┼íte rozozn├ím. Ale ─Źo arduinisti napr├şklad? Pre nich je PORTB |= (1 << 4) cryptotext.
maskrtnik01
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1282
Vek: 22.76
Zalo┼żen├Ż: 20.07.2010
Bydlisko: okolie KE
Karma: 6

Re: Programovanie ccs C

Odosla┼ąod pocitujlasku » 18 J├║l 2019, 11:45

Presne na to narazam. Arduino sam dost intenzivne vyuzivam lebo nemam casu navyse a podstatne mi to ulahcuje ked robim rozne blbosti domov. Ale oni skoncili, ked napr. nalepia viac kniznic, pricom niektore z nich pouzivaju rovnake prerusenie, alebo port a program zrazu nefunguje ako ma. Ja si to vtedy viem fixnut, lebo poznam strukturu atmelu, co-to som uz robil jak v asm, tak C.
Je to podobne, ako ked niekto, kto vie poskladat PC sa vyhlasi za odbornika. Ale netusi, ze existuje nejaky bios/uefi, netusi, ze sa tam riesia nejake IRQ (schvalne, komu tato skratka este nieco povie), nevie ako komunikuju spolu zariadenia, nevie nastavit frekvenciu pamate, nasobic... Ja mam za sebou niekolko stovak poskladanych pc, zacinal som v dobe win98, w2k, kde sa este obcas co-to muselo nastavovat rucne, takze mam prehlad aj o tom, ako funguje vnutri pocitac.
Ked sa tak nad tym zamyslim, ja cokolvek som skusal, tak vzdy som skoncil na tom, ze som po nociach studoval ako to vlastne funguje, a na zaklade toho mi bolo hned jasne na co si dat pozor a kde su pripadne obmedzenia.
Intel, Nvidia, Ubuntu, Firefox, Asus, Nissan, Jelinek 52%, Metal
---------------------------------------------------------------------------------------------
Jedn├şm z nejv─Ťt┼í├şch projev┼» ned┼»v─Ťry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 4534
Vek: 36.46
Zalo┼żen├Ż: 20.07.2007
Bydlisko: Poprad
Karma: 18

Re: Programovanie ccs C

Odosla┼ąod niki31 » 18 J├║l 2019, 18:10

Po ve─żkom h─żadan├ş na nete som zistil, ┼że C v┼íeobecne nevie porovn├íva┼ą signed a unsigned. Rozoberali to u┼ż na viacer├Żch f├│rach. Celkom n├ízorne to je pop├şsan├ę na stackoverflow.

https://stackoverflow.com/questions/2084949/comparison-operation-on-unsigned-and-signed-integers

Predt├Żm som to nemohol n├íjs┼ą lebo som nevedel ako probl├ęm spr├ívne pomenova┼ą. Ja programujem 99% vec├ş v assembleri, tak┼że nem├ím probl├ęm to ob├şs┼ą alebo vyrie┼íi┼ą inak. Samozrejme sa to d├í v C rie┼íi┼ą pretypovan├şm a pod. ale o to nejde. Je skr├ítka zar├í┼żaj├║ce ┼że v manu├íloch sa o tom striktne ml─Ź├ş. Predsa je absurdn├ę aby sa program├ítor ┼íkrabal poza u┼íi po nociach, pri oby─Źajnom element├írnom porovn├ívan├ş. Od toho s├║ predsa manu├íly, pr├şru─Źky a u─Źebnice, nie?
Keby som vopred o tomto probl├ęme vedel, mohol som si u┼íetri┼ą f├║ru ─Źasu.
Niki31
niki31
Obr├ízok pou┼ż├şvate─ża
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 87
Vek: 44.74
Zalo┼żen├Ż: 05.02.2010
Bydlisko: ┼Żilinsk├Ż kraj
Karma: 0

Re: Programovanie ccs C

Odosla┼ąod martin knocik » 18 J├║l 2019, 18:24

V manualoch sa o tom nemlci. ak si precitas knihu Ucebnica jazyka C od Herouta, tak tam najdes celu kapitolu venovanu konverzii datovych typov. a implicitn0mu (skrytemu, automatickemu) pretypovaniu.

Problemom je r├┤zne spr├ívanie r├┤znych kompilatorov. GCC pre velke x86 pri operacia signed s unsigned skor pretypuje na vasi datovy typ, kompilator od Texas Instruments v COde composeri ┼Ťetr├ş pamat a vysledkom su casto pretecenia. (ten vypise len warningy).

Predsa je absurdn├ę aby sa program├ítor ┼íkrabal poza u┼íi po nociach, pri oby─Źajnom element├írnom porovn├ívan├ş. Od toho s├║ predsa manu├íly, pr├şru─Źky a u─Źebnice, nie?
Keby som vopred o tomto probl├ęme vedel, mohol som si u┼íetri┼ą f├║ru ─Źasu.


Popis pr├íce program├ítora :) Tie┼ż som sa s t├Żm natr├ípil ked som na problem s prototypovan├şm narazil prv├Ż kr├ít.
http://mkbci.com

FEL UNIZA 2015, Ing.

─żudstvo je v├şrus ktor├Ż napadol Zem

nerobme si ┼ąa┼żk├║ hlavu z debilov ─Źo n├ím ani po ─Źlenky nesiahaj├║, bu─Ćme radi ┼że my da─Źo dok├í┼żeme a smejme sa im ak├ş s├║ sprost├ş
martin knocik
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1500
Vek: 28.5
Zalo┼żen├Ż: 23.01.2008
Bydlisko: Tren─Źianska Turn├í
Karma: 7

Re: Programovanie ccs C

Odosla┼ąod niki31 » 24 Aug 2019, 14:10

Samotn├ę pretypov├ívanie samozrejme v┼íetci ch├ípeme, kedy je potreba atd... . No nikde nieje ani zmienka ┼że treba pretypov├íva┼ą pri porovn├ívan├ş, ani v u─Źebnici od Herouta. Ja osobne som bol v domnen├ş ┼że tieto z├íkladn├ę veci sa robia implicitne. ─Äal┼íia zauj├şmav├í vec na ktor├║ som narazil je napr. n├ísobenie troch a viac premenn├Żch. Ke─Ć sa n├ísobia dve premenn├ę d├┤jde implicitne k pretypovaniu, pri n├ísoben├ş troch premen├Żch je u┼ż v├Żsledok nezmysel aj ke─Ć m├í v├Żsledn├í premenn├í dostato─Źn├║ ve─żkos┼ą.

Napr:
unsigned int8 a = 100;
unsigned int8 b = 100;
unsigned int8 c = 100;
unsigned int32 vysledok;

vysledok = a * b; vysledok je spravny
ale
vysledok = a * b * c; vysledok u┼ż je nezmysel

a nefunguje ani pretypovanie v├Żrazu
vysledok = (int32) (a * b * c)

funguje iba takto
vysledok = (int32)a * (int32)b * (int32)c

To je z├ípis z ktor├ęho sa mi dv├şha ┼żal├║dok, a ako to bude vyzera┼ą ke─Ć budem n├ísobi┼ą 10 premenn├Żch?
Samozrejme v knih├ích nikde ani zmienka, tam sa asi predpoklad├í ┼że program├ítor bude n├ísobi┼ą iba dve ─Ź├şsla. :rolleyes:
Niki31
niki31
Obr├ízok pou┼ż├şvate─ża
Nov├Ż ─Źlen
Nov├Ż ─Źlen
Pr├şspevky: 87
Vek: 44.74
Zalo┼żen├Ż: 05.02.2010
Bydlisko: ┼Żilinsk├Ż kraj
Karma: 0


Nasp├Ą┼ą na C,C++,C#

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 1 hos┼ą.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 0.92 sek├║nd