bearing: Ha det visste jag inte om att man inte kunde utan trodde att varje tecken behövde definieras var för sig så att säga, men det är ju klart att även detta funkar nu när jag ser det och var ju bra enklare och funkar precis likadant, tackar.
Tja vet inte vad det är så att säga men jag får ingen nolla eller dylikt efter, det funkar precis som jag vill och fortsätter inte heller eller så vad det verkar.
Visserligen inte, det enda jag går efter är om det visas rätt det jag förväntar mig i förhållande till de högst rudimentära kunskaper som jag inom detta. Det är sedan inget som skall användas som så i programmet utan det är bara för en representation av vad som händer ut på en display.
Oavsett, så behöver du få in i ditt programmerande att göra rätt, dvs se till att i princip alla variabler är initierade, vid deklaration (i princip är de enda undantagen räknarvariabler som används i "for" loopar och liknande, eftersom de alltid initieras i loopen.
Nästa gång, skriver du i ren C och där har du ingen förlåtelse för halvtaskig arduino-programmering.
Så, gör rätt från början, så slipper du framtida överraskningar.
Henry skrev:Tja vet inte vad det är så att säga men jag får ingen nolla eller dylikt efter, det funkar precis som jag vill och fortsätter inte heller eller så vad det verkar.
Det fungerar såhär att printfunktionen loopar genom strängen tills den stöter på noll, och slutar då. Nolla terminerar/avslutar strängen. Det är alltså inte '0', utan 0. Den tidigare hade skickats som en asciinolla och synts. Den senare skickas inte, utan berättar bara för funktionen att strängen tar slut. Alla strängar innehåller en avslutande nolla i C.
char value[] = "2.86E-7" tar upp 8 bytes, och är samma som char value[8] = {'2', '.', '8', '6', 'E', '-', '7', 0} <- notera nollan jag lade in på slutet.
Senast redigerad av bearing 12 september 2019, 21:36:56, redigerad totalt 1 gång.
Ok då hänger jag med, vet att jag läst det någonstans en gång.
TomasL: är inte grejer initierade på rätt sätt klagar väl kompilatorn, annars lär ju inte programmet fungera som tänkt. Inga direkta planer på att gå vidare till C, detta är bara för en grej och en grej endast och de krav jag har funkar de funktioner som finns Arduino IDE.
Kodexemplet kan du totalt ignorera som så, det är förstås inte på något vis så som jag kommer att skriva huvudprogrammet sedan.
Senast redigerad av Henry 12 september 2019, 21:37:09, redigerad totalt 1 gång.
TomasL skrev:Man skall aldrig utgå ifrån att oinitierade variabler initieras till 0x00.
Det normala är väl att det inte är så.
Det normala? I C, och C++ som i det här fallet, är variabler som är globala eller static garanterat initierade. Till skillnad från lokala, oinitierade variabler (icke static), som inte behöver ha ett definierat värde.
Spelar enligt mig ingen roll, eftersom man som jag ser det alltid skall initialisera variabler, för att slippa överaskningar.
Ja statiska variabler brukar initialiseras till 0, men om man tar som regel att alltid initialisera, så missar man ingenting.
På samma sätt som i "if"ar alltid börja med konstanten, dvs "if 0==a"
Man måste väl inte hacka på Arduino i alla sina dagar!
Om jag är nöjd med att ta mig från A till B på min cykel,
numera batteridrivet med både Volt och Ampere, då är väl det OK så länge den gör jobbet.
Jag underskattar inte därför alla som kan få köra Formel1, om än på avstängda och begränsade banor
Men jag uppskattar din kunskap.
Men i Henrys kod var det ju ingen lokal array, då är den garanterad att fylla ut med nollor.
En oinitierad lokal variabel är odefinierad.
En global/static variabel fylls ut med nollor om den inte är helt initierad.
En lokal/automatic variabel som inte är initierad kan ha vilket värde som helst.
En lokal/automatic variabel som är delvis initierad borde också fyllas med nollor. Standarden(erna) är inte jättetydlig(a) på den punkten, men gcc fyller i alla fall på med nollor i det fallet också.