Stránka 1 z 1

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

Napsal: 24 led 2020, 16:45
od caga
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;
}

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

Napsal: 24 led 2020, 17:24
od jankop
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;
}

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

Napsal: 25 led 2020, 08:27
od gilhad
Protoze nevypisujes hodnotu, kterou ta funkce vraci, ale dolni byte jeji vstupni adresy

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

Napsal: 25 led 2020, 16:47
od caga
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...

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

Napsal: 25 led 2020, 18:29
od kiRRow
typ proměnná = funkce(parametr...);
if(proměnná==...

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

Napsal: 25 led 2020, 18:49
od caga
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.

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

Napsal: 25 led 2020, 19:24
od kiRRow
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 </>

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

Napsal: 25 led 2020, 20:25
od caga
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.

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

Napsal: 26 led 2020, 09:35
od KamilV
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).