proč mi funkce vrací něco jiného
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
proč mi funkce vrací něco jiného
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;
}
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;
}
-
- 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
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:
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
Protoze nevypisujes hodnotu, kterou ta funkce vraci, ale dolni byte jeji vstupni adresy
Re: proč mi funkce vrací něco jiného
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...
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
typ proměnná = funkce(parametr...);
if(proměnná==...
if(proměnná==...
Re: proč mi funkce vrací něco jiného
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.
byte fce=funkce ();
ale ani deklaraci na zacatku static byte fce=0; mi nepomohla.
Re: proč mi funkce vrací něco jiného
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 </>
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
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.
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
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).
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 16 hostů