proč mi funkce vrací něco jiného

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
caga
Příspěvky: 7
Registrován: 19 led 2020, 14:59
Reputation: 0

proč mi funkce vrací něco jiného

Příspěvek od caga » 24 led 2020, 16:45

Ahoj všem, je tu někdo, kdo by mi vysvětlil proč mi přijde jako výsledek číslo 95 ?
Klon UNA, IDE 1.8.10

void setup()
{
Serial.begin(1200);
delay(100);
}

void loop()
{
Serial.print(byte(ci));
while(1)
{
}
}

byte ci()
{
return 65;
}

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: proč mi funkce vrací něco jiného

Příspěvek od jankop » 24 led 2020, 17:24

Jestli vono to nebude tím, že žádnou funkci nevoláš. Přiznám se, že tak nějak nechápu tvoji konstrukci.
Ale pokud se bavíme o funkci, tak by to mělo vypadat takto:

Kód: Vybrat vše

void setup()
{
  Serial.begin(1200);
  delay(100);
}

void loop()
{
  Serial.print(ci());
  while (1)
  {
  }
}

byte ci(void)
{
  return 65;
}

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: proč mi funkce vrací něco jiného

Příspěvek od gilhad » 25 led 2020, 08:27

Protoze nevypisujes hodnotu, kterou ta funkce vraci, ale dolni byte jeji vstupni adresy

caga
Příspěvky: 7
Registrován: 19 led 2020, 14:59
Reputation: 0

Re: proč mi funkce vrací něco jiného

Příspěvek od caga » 25 led 2020, 16:47

Díky oběma za vysvětlení.
Konstrukci není potřeba chápat. To bylo napsané pro jednoduchost v příkladu.
Ještě bych se zeptal.

Pokud mi nějaká funkce vrací hodnotu.
Jak tu hodnotu dostanu do proměnné ?

Mám
if(funkce()==0x80)
{
//neco udelej
}
else if(funkce()==0x04)
{
//udelej neco jineho
}

Ale já v tomto případě mohu zavolat funkci jen jednou...

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: proč mi funkce vrací něco jiného

Příspěvek od kiRRow » 25 led 2020, 18:29

typ proměnná = funkce(parametr...);
if(proměnná==...

caga
Příspěvky: 7
Registrován: 19 led 2020, 14:59
Reputation: 0

Re: proč mi funkce vrací něco jiného

Příspěvek od caga » 25 led 2020, 18:49

Tak jsem si to myslel, ale pořád mi to píše, že tu promenou nemam delkarovanou. Ja myslel, ze ji deklaruju prave tim zapisem
byte fce=funkce ();

ale ani deklaraci na zacatku static byte fce=0; mi nepomohla.

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: proč mi funkce vrací něco jiného

Příspěvek od kiRRow » 25 led 2020, 19:24

A má funkce vůbec deklarovaný výstup ?
byte funkce(){
...
return něcoCoJeByte;
}
......
ideálně posílat celý kód ... a v tagu code .... takový to sprostý tlačítko </>

caga
Příspěvky: 7
Registrován: 19 led 2020, 14:59
Reputation: 0

Re: proč mi funkce vrací něco jiného

Příspěvek od caga » 25 led 2020, 20:25

Samozřejmě, že jsem to měl jako funkci s výsledkem.
Díky, zdá se že to tak chodí. Zřejmě jsem tam měl vynechánu nějakou závorku, nebo středník.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: proč mi funkce vrací něco jiného

Příspěvek od KamilV » 26 led 2020, 09:35

caga píše:
25 led 2020, 16:47
Konstrukci není potřeba chápat. To bylo napsané pro jednoduchost v příkladu.
Konstrukce je naopak potřeba chápat naprosto detailně, jen tak se potom člověk vyhne tomu, že mu to vrací jiné než očekávané výsledky.
Jakékoliv zjednodušování příkladů na fóru není vhodné, protože se tím může buď skrýt reálná chyba, nebo vnést další.

Jak vidíš, na každém středníku či závorce záleží. U funkcí obzvlášť, protože je zásadní rozdíl, jestli funkci zavoláš a uchováš si její vrácenou hodnotu, nebo funkci nezavoláš a uchováš si pouze pointer na ni (který bude reprezentován dost "náhodným" číslem).

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 18 hostů