---
title: "Förklara kod?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/102692-förklara-kod"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Fredde Mannen"
published: "2004-04-30T14:19:11.000Z"
updated: "2004-05-01T13:53:21.000Z"
replies: 13
views: 283
page: 1
pages: 1
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/c-cpp/102692-förklara-kod"
---

# Förklara kod?

## #1 — Fredde Mannen, 2004-04-30T14:19Z

Hur skulle ni förklara denna mängd med if-satser?

```
  int tal = 0, i = 0;
  char tecken = '0';
  if(tecken && i)
  if(tal || i)
  if(!tal);
  else if(!i) {
  if(tal+i)
  printf("Hej på er!\n");}
  else
  printf("Vad händer?\n");
  printf("Nu är det slut!\n");
  return 0;
```

och vad skulle ni ändra på för att få resultatet 

```
Hej på er!
```

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

## #2 — UlfT, 2004-04-30T14:52Z

tecken && i: sant om tecken pekar mot NULL, vilket det inte gör. Alltså falskt. Därmed struntar vi i de två nästföljande if-satserna, och går direkt vidare till första else.

if (!i): sant, eftersom i == falskt.

if (tal + i): falskt, eftersom tal + i == 0.

Därför skrivs inte nästföljande sats, som du vill ha utskriven.

Jag skulle sätta tal = 1 i början. Då borde den önskade utskriften komma, för då skulle den sista if-satsen bli sann. De andra if-satserna som tal förekommer i, kommer man i vilket fall som helst inte till, så det blir den enda skillnaden.

Jag reserverar mig för att jag själv tycker det såg tillkrånglat ut. ;)

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

## #3 — Fredde Mannen, 2004-04-30T15:06Z

det är du inte ensam om! :) 

tack! :)

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

## #4 — Fredde Mannen, 2004-04-30T15:21Z

men att ange tal = 1, kommer inte att gör någon förändring! Här skrivs  fortfarande endast satsen "Nu är det slut!". 

Ingen förändring dvs. 

Förändingar får jag genom att sätta tal = 1 samt i = 1. 

Förändring: 
"Vad händer?"
"Nu är det slut!"

fler ljusa idéer! :)

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

## #5 — UlfT, 2004-04-30T15:23Z

När jag tänker efter, har jag nog resonerat fel angående den första if-satsen. Men slutsatsen angående den, bör vara rätt. Egentligen blir "vad som helst" && 0 == 0 och därmed falskt. Så slutsatsen är fortfarande densamma, även om resonemanget bakom den var tokigt.

Det är lite krångligt, som sagt var. :)

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

## #6 — Fredde Mannen, 2004-04-30T15:26Z

> **UlfT skrev:**
>
> När jag tänker efter, har jag nog resonerat fel angående den första if-satsen. Men slutsatsen angående den, bör vara rätt. Egentligen blir "vad som helst" && 0 == 0 och därmed falskt. Så slutsatsen är fortfarande densamma, även om resonemanget bakom den var tokigt.
> 
> Det är lite krångligt, som sagt var. :)

Jo tack.. det är lite krångligt! :) 

Japp..  resonemanget är det juh inget fel på! :) 

Krångligt krångligt.. :)

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

## #7 — UlfT, 2004-04-30T15:44Z

> **Fredde Mannen skrev:**
>
> Förändingar får jag genom att sätta tal = 1 samt i = 1. 
> 
> Förändring: 
> "Vad händer?"
> "Nu är det slut!"

Åtminstone kan vi konstatera att du därmed kommer till if(!i). Eftersom i == 1, blir !i == falskt. Då får du inte den utskrift du ville ha. Förmodligen har jag tänkt fel angående de if-satser som jag påstod kommer hoppas över. Om vi antar att båda dessa if-satser utförs, då borde vi ha:

if (tal \|\| i): sant om minst en av dem är 1.

if (!tal): falskt om tal == 1. Sant om tal == 0.

Den första if-satsen (if (tecken && i)) borde bli sann om i == 1. Då utförs nästa if-sats, som under samma förutsättningar, därmed är sann, även om tal == 0. Detta ger att (if(!tal)) blir sann om tal == 0. Men då blir ju if(!i) som sagt falsk.

Tyvärr kommer jag inte fram till en lösning. :(

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

## #8 — Fredde Mannen, 2004-04-30T15:57Z

Ingen fara... detta är så kallad hjärngymnastik! ;) 

tack i alla fall.. har något att grummla på i natt :e

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

## #9 — UlfT, 2004-04-30T16:33Z

Jag kom att tänka på att du inte specificerade hur man får ändra. Hittills har vi bara resonerat om ändringar av variablerna. Men tänk om man får ändra även på villkoren? Då skulle man kunna tänka sig:

i = 1 och tal = 1 som utgångspunkt.

if(tecken && i): sant, eftersom både tecken och i skiljer sig från noll, och därmed är sanna.

if(tal \|\| i): sant, eftersom minst en av dem är sanna.

if(!tal); : falskt, eftersom tal är sant.

därmed kommer vi till följande villkor:

if(!i)

Med i == 1, blir ju det villkoret falskt, och den önskade texten uteblir. Men om det är tillåtet att ändra villkoret, skulle vi lika gärna kunna skriva det som:

if(i)

Då blir det sant, och vi kommer till:

if (tal+i)

där tal + i skiljer sig från noll. Det villkoret är därmed också sant, och den önskade texten skrivs ut.

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

## #10 — Fredde Mannen, 2004-05-01T09:11Z

Bingo! ;) 

Där satt den UlfT! :e

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

## #11 — UlfT, 2004-05-01T09:14Z

Nu installerade jag en c-kompilator. Jag fann att min sistnämnda lösning funkar. Jag fann också en annan lösning som bara kräver två ändringar:

tal = 1

och

if (tecken && i) -\> if (tecken \|\| i)

Därmed blir det villkoret sant i och med att tecken != NULL, och if(!i) är sant eftersom i = false.

Man måste alltså fortfarande ändra i ett av villkoren, men antalet ändringar är nu färre. :)

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

## #12 — Fredde Mannen, 2004-05-01T10:19Z

Japp! :) \*skål\*  :bire

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

## #13 — Marcus E, 2004-05-01T11:21Z

Vad är meningen med koden?

Varför tar du inte bort allt utom printf om du bara vill skriva ut en text?

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

## #14 — Fredde Mannen, 2004-05-01T13:53Z

> **Marcus E skrev:**
>
> Vad är meningen med koden?
> 
> Varför tar du inte bort allt utom printf om du bara vill skriva ut en text?

Det var en liten hjärnmassageuppgift! :e

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

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/102692-förklara-kod
