---
title: "Programmeringsmissar att skratta åt"
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/107953-programmeringsmissar-att-skratta-åt"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "aasah"
published: "2004-07-25T21:12:52.000Z"
updated: "2004-08-07T17:13:37.000Z"
replies: 21
views: 959
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/107953-programmeringsmissar-att-skratta-åt"
---

# Programmeringsmissar att skratta åt

_Sida 1 av 2._

## #1 — aasah, 2004-07-25T21:12Z

Tydal skrev i PHP-forumet apropå en sällsynt knasig fråga från vänstertecknad:

> **tydal skrev:**
>
> > **aasah skrev:**
> >
> > Glöm denna tråd, tack.... :r
>
> 
> 
> Det är sånt här man lär sig på. Jag glömmer aldrig när en klasskompis till mig på högskolan (jo, en tjej faktiskt) ville ha lite hjälp med programmeringen. Hon lyckades inte få sitt program att fungera och hon sa att det blev just parse error. Jag sa att det måste vara något litet tecken som är fel, kanske nåt semikolon. Men nej då, det var det inte, sa hon, för hon hade kollat jättenoga och hon hade inte glömt något semikolon. Hon var säker på att det var något fel på datorn. Så jag följde ju med henne till datorsalen för att kolla på hennes kod, och det visade sig vara en intressant upplevelse. Hon hade faktiskt inte glömt något semikolon. Verkligen inte. Snarare tvärtom...
> 
>
>
> ```
> if (a == 2);
>   printf("Nu minns jag inte vad som stod här...");
> else if (a == 3);
>   printf("... och jag har för dålig fantasi...");
> else;
>   printif("... men ni förstår principen.");
> ```

Och det får mig att minnas en del (i efterhand) roliga fel man gjort... :OO 

I ett flera hundra rader långt C-program lyckades jag med något liknande för ett (bra) tag sedan... I en av de första raderna:
\# DEFINE stop 7;
...
Alldeles mot slutet:
for (i =1; i \< stop; i++) { .... }

Det felsöktes i timmar innan vår lärare hittade felet.... :r

Vad har ni gjort för oförglömliga tabbar...?

Red: //Ursäkta, har inte använt C sedan den kursen tog slut och lärde mig det inte ordentligt då heller. Det blev visst lite extra fel i "programmet" nu. Dock berodde allt utom ';':t på uruselt minne...

Permalänk: https://www.webforum.nu/p/107953

## #2 — Melea, 2004-07-25T21:15Z

Har nog förträngt de flesta. ;)

Permalänk: https://www.webforum.nu/p/1394144

## #3 — SirPeter, 2004-07-25T21:16Z

Kan någon förklara det där för oss som inte kan något om programmering?

Permalänk: https://www.webforum.nu/p/1394146

## #4 — tydal, 2004-07-25T21:22Z

I Basic-liknande språk använder man ny-rad för att tala om ett kommando är slut. Ett kommando kan alltså (i normalfallet) inte vara längre än en rad.

I C-liknande språk använder man istället ett semikolon ; för att tala om att kommandot är slut och ett kommando kan ta upp hur många rader som helst.

Bland nybörjare i C-liknande språk är det vanligt att man råkar glömma ett semikolon här eller där, och då klagar ju datorn eftersom den då inte vet var kommandot tar slut.

Emellertid är det så att en del kommandon ska inte avslutas med semikolon. If, else if och else är exempel på sådana. Min klasskompis hade gjort misstaget att sätta ut semikolon även på dessa.

Permalänk: https://www.webforum.nu/p/1394149

## #5 — Gislaved.net, 2004-07-25T21:23Z

Jag gjorde en häromveckan faktiskt.

```php
$antal = $_GET["antal"];
$korrekt = 3;

if($antal = $korrekt){
   echo "Korrekt.";
} else {
   echo "Inkorrekt.";
}
```

Jag letade länge efter felet. :e

SirP, det borde stått *\# define stop 7* i aasahs kod. Likhetstecknet och semikolonet förstörde allt.

/red skrifvel

Permalänk: https://www.webforum.nu/p/1394150

## #6 — Phorpher, 2004-07-25T21:23Z

> **SirPeter skrev:**
>
> Kan någon förklara det där för oss som inte kan något om programmering?

```
# DEFINE stop = 7;
```

Detta ska vara ett makro i C. Dock felskrivet. Alla förekomster av STOP ska ersättas med 7 är tanken.

Rätt:

```
#define STOP 7 // Inget likamed eller semikolon.
```

```
for (int i =1; i < stop; i++) { .... }
```

 

Eftersom det var C så är inte deklarationer av den här typen godkända. I C måste alla deklarationer av variabler ske i början på ett block.

Permalänk: https://www.webforum.nu/p/1394151

## #7 — aasah, 2004-07-25T21:23Z

En Ansvarig som inte kan något om programmering!?! :q Men visst... Jag antar att det är min tabbe du undrar över?

\# DEFINE stop 7;   
Detta är ett meddelande till preprocessorn. Byt ut stop mot allt efter rakt av. Så när preprocessorn var klar stod det:
for (i =1; i \< 7; ; i++) { .... }
Så det funkade mindre bra... :(

Det är oerhört viktigt i C att alltid avsluta med ';'.... dock INTE efter preprocessor kommandon....

//Ursäkta, har inte använt C sedan den kursen tog slut och lärde mig det inte ordentligt då heller. Det blev visst lite extra fel i "programmet" nu. Dock berodde allt utom ';':t på uruselt minne... :r

Permalänk: https://www.webforum.nu/p/1394152

## #8 — tydal, 2004-07-25T21:28Z

\#define innebär en slags sök och ersätt. Det första ordet du skriver efter är det som den letar efter och allt du skriver efter är det den ersätter med.

\#define stop = 7;

letar alltså efter stop och ersätter det med = 7; vilket ledde till att datorn klagade på att man hade stavat fel på raden längst ner i koden där Åsa då använder sig av stop.

Åsa skulle ha skrivit:
\#define stop 7

vilket hade ersatt stop med 7.

Eller så hade hon kunnat skapa en variabel som hette stop och hade värdet 7:

int stop = 7;

(int betyder att variabeln ska vara av typen "integer" (engelska för heltal)).

Permalänk: https://www.webforum.nu/p/1394156

## #9 — Brantis, 2004-07-25T21:33Z

Det borde väl stått *\#define stop 7;* eller något ... ;)

Permalänk: https://www.webforum.nu/p/1394159

## #10 — :stefan:, 2004-07-25T22:07Z

\*blundar och läser en annan tråd istället\* :e

Permalänk: https://www.webforum.nu/p/1394170

## #11 — hypatia, 2004-07-25T22:12Z

\*äter en glass istället\*

Permalänk: https://www.webforum.nu/p/1394174

## #12 — spango, 2004-07-25T22:42Z

Inga tabbar, utan tvärtom helt fungerande men kul kod:
<http://www.kuro5hin.org/story/2004/6/1/43942/41236>

Personlig favorit:

Perl är känt för att ibland kunna orsaka rätt kryptisk kod, så Perlkodare brukar ibland försöka excellera i att skriva oläsbarheter. Någon skriver:
*Note to you perl people: "cryptic" != "funny".*
I de flesta C-baserade språk betyder != "skilt från", så man skulle kunna tro att detta i Perl blir logisk sanning, eftersom texten "cryptic" skiljer sig från "funny". Men hej...

> **coderlemming skrev:**
>
> Wait a minute...
>
>
> ```
> #!/usr/bin/perl
> 
> if ("cryptic" != "funny") {
>   print "Cryptic PERL programs are not funny.\n";
> } else {
>   print "Cryptic PERL programs are funny.\n";
> }
> ```

Och vad skrivs ut när man kör programmet...?
*Cryptic PERL programs are funny.*

Permalänk: https://www.webforum.nu/p/1394183

## #13 — M.Cheraghi, 2004-07-25T22:58Z

Jag gillar inte att obegripliga trådar finns i cafét :e
Det borde flyttas till programmering övrigt.
Cafét är till för nötter som mig som vill att allt ska vara lika simpelt som Duplo ;)

Permalänk: https://www.webforum.nu/p/1394185

## #14 — Dryden, 2004-07-25T22:59Z

Dags att röra på sig. Tråden flyttas från Caféet i samarbete med [Jämtflytt](http://www.jamtflytt.se/). ;)

Permalänk: https://www.webforum.nu/p/1394186

## #15 — Erik Juhlin, 2004-07-25T23:00Z

Ibland tror man verkligen att det är ett hårdvarufel. Men så är det bara någon löjlig lite skitsak. Kan absolut inte hitta det själv, men kollar någon annan på det så hittar de det direkt. :)

Ibland kan också någon annans magic hands hjälpa. Man kan klicka på den där grejen 20 gånger o få samma mystiska fel, men när någon annan kommer och provar så funkar det helt plötsligt. :)

Permalänk: https://www.webforum.nu/p/1394187

## #16 — Peppo, 2004-07-26T00:21Z

Mitt bidrag (inga missar kanske men klantigt gjort):
**if klockan\>1 or klockan\<3 then...** 
Var lite trött när jag skrev det :birp 

Är rätt duktig på att gör dubbelnegationer också när jag glömmer bort att använda hjärnan:
**if not i\<\>1 then...** :r :e

Permalänk: https://www.webforum.nu/p/1394198

## #17 — Pace, 2004-07-26T01:18Z

Titta på bloggen [The Daily WTF](http://thedailywtf.com/) om detta intresserar er.

Se exempelvis denna eleganta och effektiva kod:

![](http://thedailywtf.com/images/9/o_caseloop.gif) ;)

Permalänk: https://www.webforum.nu/p/1394202

## #18 — GunnarD, 2004-07-26T05:24Z

Kanske lite OT men var inte programmering roligare för?

Apple's gamla C kompilator kunde ge en del roliga felmeddelanden: <http://www.effect.net.au/lukastan/humour/Computing-Software/Error-Messages-Mac.htm>

Permalänk: https://www.webforum.nu/p/1394213

## #19 — Brimba, 2004-07-26T05:28Z

> **GunnarD skrev:**
>
> Kanske lite OT men var inte programmering roligare för?

 Jo, och tur är väl det!

Permalänk: https://www.webforum.nu/p/1394214

## #20 — Sang-drax, 2004-07-27T20:51Z

För några år sedan hade jag ett DirectX-spel som krashade efter några minuters körning. Jag såg efter ett tag i Task Manager att minnesanvändningen steg konstant.
Efter ett längre tag hittade jag följande av mig välskriva funktion:

```
//DrawText v2.0
DxEngine* DxEngine::DrawText(int x, int y,const Color& c,TCHAR *szFormat, ...)
{
    TCHAR *szBuffer=new char[strlen(szFormat)+512];// Large buffer for very long text

    va_list pArgs;
    va_start(pArgs, szFormat);
    vsprintf(szBuffer, szFormat, pArgs);
    va_end(pArgs);

    HDC hdc;

    if(lpddsback->GetDC(&hdc)==DD_OK)
    {
        SelectObject(hdc,hFont);
        SetTextColor(hdc, RGB(c.r,c.g,c.b));
        SetBkMode(hdc, TRANSPARENT);
        TextOut(hdc, x, y, szBuffer, strlen(szBuffer));
        lpddsback->ReleaseDC(hdc);
    }

 return this;

 delete[] szBuffer;
}
```

Permalänk: https://www.webforum.nu/p/1395004

---

Tråden på webben: https://www.webforum.nu/amne/programmering/107953-programmeringsmissar-att-skratta-åt  
Nästa sida: https://www.webforum.nu/amne/programmering/107953-programmeringsmissar-att-skratta-åt/page2.md
