Vad innebär "for (i=0x80;i>0;i/=2)" (C-program

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Rätt säker på att det är ANSI-C, men någon optimering (av annat än själva syntaxen) är det ju inte.

Och man ska kunna ha TAB i code-blocken. Men du måste nog göra "ordning" allt i en editor först, och sedan klistra in i inmatningsfältet.
Användarvisningsbild
GrodanB
Inlägg: 245
Blev medlem: 11 februari 2006, 16:46:25
Ort: Göteborg
Kontakt:

Inlägg av GrodanB »

Ja, kanske det... sidan är iofs. inte nått värd som bevis... men det fungerar i C kompilatorer (// komentaren tillhör inte heller C) Kan vara C99 eller nått... :)

Men den sidan verkar vara en bra ställe att hitta info om C programering får tacka för den länken.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Vem kör med // ? :P
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Jag :)
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Många kompilatorer klarar inte nestlade /*kommentarer*/ så om man vill avkommentera ett block kod med hjälp av /**/ så måste ju kommentarerna i det blocket vara //-kommentarer.
JJ
Inlägg: 366
Blev medlem: 16 maj 2005, 21:33:02

Inlägg av JJ »

Jag vet inte om jag missuppfattade vad som försökt sägas tidigare men såhär är det iallfall: logiska operationer returnerar 0 eller 1 . Exempel: värdet av (x==y) är alltid 0 eller 1.

// är C++ och C99 dvs ANSI.

Ett annat sätt att kommentera ut block är:

#if 0
kod
#endif
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

DET kan väl knappast vara ett vanligt sätt att kommentera ut block, eller?
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Jo, det är det vanligaste i större sammanhang. Linuxkerneln bl.a..
Många editorer markerar koden däremellan som vilken bortkommenterad kod som helst.
Användarvisningsbild
GrodanB
Inlägg: 245
Blev medlem: 11 februari 2006, 16:46:25
Ort: Göteborg
Kontakt:

Inlägg av GrodanB »

Nu för att göra nått riktigt vågat... Jag tänker gå lite On Topic...

Kan det verkligen vara det mest smidiga sättet att implementera en I2C kommunikation på en 18FXXX?

Verkar vara det sämsta sättet jag personligen kan komma på... men å andra sidan vet jag för lite om vad som händer för övrigt.
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Inlägg av PHermansson »

Jösses vilken diskution det blev :) Men inte mig emot, jag har lärt mig lite mer.
Noteras ska att det _inte _ är ren I2C utan bara något liknande (enligt vad jag läst mig till). Men visst borde det gå att göra bättre, tror koden var skriven för 80C51 eller nått sånt...
Användarvisningsbild
Ulf
Inlägg: 399
Blev medlem: 15 februari 2006, 14:04:03

Inlägg av Ulf »

#if 0
kod
#endif

är mycket vanlig. Dels förhindrar det som sagt nästade kommentarer och det blir tydligt i koden. Om man har flera ställen som man måste kommentera bort för att testa en viss sak och kanske togglar
den mellan olika körningar så kan man definiera 0:an till något vettigt:

# define PROBLEM_TEST 0

#ifdef PROBLEM_TEST
kod
#endif

så slipper man pilla på flera ställen!

Något helt annat som kan vara bra om pillar med makron i C är att
köra en fil genom enbart preprocessorn:

gcc -E dinfil.c

då kan man se vad som händer när man använder olika flaggor och definitioner och vad som går i väg till kompilatorn.
Skriv svar