Permalänk
Medlem

Programmering 1 C# hjälp

Hej, jag har fastnat vid en fråga. Den lyder följande:

Viken datatyp skapas det en instans av vid följande rad kod?
double myNumber = 5.7;

Trodde jag skulle ta hänsyn till vilken datatyp, då jag tänkte på double så är det ju 64 bitars decimaltal.

Vad är svaret? jag förstår mig inte riktigt på frågan.

Tack för all hjälp på förhand

Mvh, Stanikz

Permalänk
Medlem
Permalänk
Datavetare

Känns som en rätt krystad fråga. Typen är ju specificerad till double så känns som att frågan handlar om vilken typ den explicita konstanten 5.7 har. För att få svar på den typen av frågor oavsett språk bör man som programmerare lära sig att leta upp språkdefinitionen, för där står rätt svar vilket inte alltid är fallet om man hittar något på forum eller liknande.

Språkdefinitionen för C# kan laddas ner från MSDN och har detta att säga om tal med "." i sig, d.v.s. reella tal (kapitel "2.4.4.3 Real literals")

Citat:

...
real-type-suffix: one of
F f D d M m
If no real-type-suffix is specified, the type of the real literal is double
...

D.v.s 5.7 är av typen double då det är ett reellt tal utan suffix.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

double

/ethnic

Visa signatur

Rig: Ryzen 7 5800X - Crucial Ballistix Black 3200 Mhz 32 GB - MSI RTX 4060 TI OC 8 GB - Fractal Design Define C
Laptop: Macbook Pro M1 Max - 32GB - 14"
Media/Server: Raspberry PI 4 - 2 GB - Plex Media Server - KODI - PiHole - qBittorrent - HomeAssistant
Media/Server: NUC - i7-7567U - 32GB - Plex Media Server - Uptime Kuma - mineCraft - qBittorrent - 10 TB Storage
NAS: Zyxel 325v2 - 5 TB

Permalänk
Medlem

Double?
Frågan borde ha ställts:
var tal = 5.7;

Visa signatur

2600k @ STOCK <|> GTX 970 Omega!<|> Nån samsung 500gb ssd <|> 16 GB Kingston Hyper X <|> BenQ XL2420t
"Det finns inget skrot, bara gamla delar som kan användas på nya sätt" - Mulle Meck

Permalänk
Medlem
Skrivet av Yoshman:

Känns som en rätt krystad fråga. Typen är ju specificerad till double så känns som att frågan handlar om vilken typ den explicita konstanten 5.7 har. För att få svar på den typen av frågor oavsett språk bör man som programmerare lära sig att leta upp språkdefinitionen, för där står rätt svar vilket inte alltid är fallet om man hittar något på forum eller liknande.

Språkdefinitionen för C# kan laddas ner från MSDN och har detta att säga om tal med "." i sig, d.v.s. reella tal (kapitel "2.4.4.3 Real literals")

D.v.s 5.7 är av typen double då det är ett reellt tal utan suffix.

Tacksam för alla svaren allihop, speciellt tack till dig som förklarar detta ännu närmare och mer förståeligt.

Alltså nu är jag fast vid en annan uppgift.
Jag har läst om If-satsen i boken, och begriper det fortfarande inte.
Ni behöver inte ge mig svaret på frågan, bara ledtråd som får man till och förstå detta
Frågan lyder följande

Vilket värde får variabeln a efter följande kodrader?

int a = 6; if(a==6) { a=9; if(a==6) a=4; } if(a==4) a = 7;

Permalänk
Medlem

nu kan jag inget om c# men IF satser fungerar lika i alla språk. se en if sats som följande
om (det innanför parentesen är sant) gör det som kommer efter, om inte hoppa till nästa del. dvs
a=4
if (a==4)
a=3;
så kommer a=3 men om a hade varit = 5 från början hade den även varit 5 i slutet.

Permalänk
Medlem
Skrivet av liandrin:

nu kan jag inget om c# men IF satser fungerar lika i alla språk. se en if sats som följande
om (det innanför parentesen är sant) gör det som kommer efter, om inte hoppa till nästa del. dvs
a=4
if (a==4)
a=3;
så kommer a=3 men om a hade varit = 5 från början hade den även varit 5 i slutet.

Hemmsk ledsen men jag begriper inte det alls. Alltså det innanför parantesen är svaret? ....

if(a==4) a = 7;

Då måste detta vara 4 alltså?

Permalänk
Hedersmedlem
Skrivet av stanikz:

Hemmsk ledsen men jag begriper inte det alls. Alltså det innanför parantesen är svaret? ....

if(a==4) a = 7;

Då måste detta vara 4 alltså?

Det där betyder alltså
"Om a är 4 så sätt a till 7".

Permalänk
Medlem

int a = 6; if(a==6) { a=9; if(a==6) a=4; } if(a==4) a = 7;

Som jag ser det så deklareras a till 6. Därefter OM a är lika med 6 så sätter den a till 9. Alltså stämmer inte någon av dom andra if satserna efteråt och därmed är a = 9.

Permalänk
Medlem
Skrivet av l4nky:

int a = 6; if(a==6) { a=9; if(a==6) a=4; } if(a==4) a = 7;

Som jag ser det så deklareras a till 6. Därefter OM a är lika med 6 så sätter den a till 9. Alltså stämmer inte någon av dom andra if satserna efteråt och därmed är a = 9.

Ja nu förstår jag det Tack!!!

Permalänk
Medlem

Hej allesamman och resten av Sweclockers medlemmar
Jag har fått en uppgift som är följande:

Denna uppgiften ska du skapa koden för följande scenario:
1. Skapa en boolsk variabel skriva och tilldela ett värde.
2. Skriv ett villkor som kontrollerar om skriva är sant.
3. Om skriva är sant så skriv ut skriva är sant till skärmen
4. Annars skriver du ut skriva är falskt till skärmen

Så jag förstod att det ville att jag skulle gå utifrån boolean och if-sats funktionen i C#
Min lösning till fråga är följande:

string svar; bool skriva = false; Console.WriteLine("Ange ifall skriva är sant? ja/nej"); svar = Console.ReadLine().ToLower(); //Oavsett om man skriver ja/nej med stora eller små bokstäver svar.Trim(); //Tar bort allt mellanslag/space innan och efter "ja" och "nej" if (svar == "ja") { skriva = true; Console.WriteLine("skriva är sant"); } else { skriva = false; Console.WriteLine("skriva är falskt"); } Console.ReadLine(); } } }

Min första fråga till er kunniga C# använder? har jag gjort rätt?
När jag kör programmet så verkar allt funka fint, men jag får ett felmeddelande rättar sagt varning inne i VBS (The variable 'skriva' is assigned but its value is never used

Jag använder skriva variabel flera gånger i kodningen.

Vad gör jag för fel? tackar och bugar för all tips på förhand.

Permalänk
Medlem
Skrivet av stanikz:

Hej allesamman och resten av Sweclockers medlemmar
Jag har fått en uppgift som är följande:

Denna uppgiften ska du skapa koden för följande scenario:
1. Skapa en boolsk variabel skriva och tilldela ett värde.
2. Skriv ett villkor som kontrollerar om skriva är sant.
3. Om skriva är sant så skriv ut skriva är sant till skärmen
4. Annars skriver du ut skriva är falskt till skärmen

Så jag förstod att det ville att jag skulle gå utifrån boolean och if-sats funktionen i C#
Min lösning till fråga är följande:

string svar; bool skriva = false; Console.WriteLine("Ange ifall skriva är sant? ja/nej"); svar = Console.ReadLine().ToLower(); //Oavsett om man skriver ja/nej med stora eller små bokstäver svar.Trim(); //Tar bort allt mellanslag/space innan och efter "ja" och "nej" if (svar == "ja") { skriva = true; Console.WriteLine("skriva är sant"); } else { skriva = false; Console.WriteLine("skriva är falskt"); } Console.ReadLine(); } } }

Min första fråga till er kunniga C# använder? har jag gjort rätt?
När jag kör programmet så verkar allt funka fint, men jag får ett felmeddelande rättar sagt varning inne i VBS (The variable 'skriva' is assigned but its value is never used

Jag använder skriva variabel flera gånger i kodningen.

Vad gör jag för fel? tackar och bugar för all tips på förhand.

det enda du gör med variabeln "skriva" är att först sätta den lika med falskt och sedan sant eller falskt beroende på vad användaren har matat in. dvs du använder aldrig värdet på variabeln utan bara ger den ett nytt värde lite då och då. det du behöver göra är att i en IF sats kolla om variabeln skriva är sant eller inte. Som jag tolka uppgiften behöver du inte be användaren mata in något alls utan kan helt strunta i den delen. om inte ha kvar det du har skrivit men ta bort utskrifterna (lämna allt utom utskrifterna). efter det ha en ny if sats som kollar värdet på "skriva" och gör utskriften efter det. så här skulle man troligen inte göra i verkligheten men det är vad skoluppgiften saknar

Permalänk
Hedersmedlem
Skrivet av stanikz:

Hej allesamman och resten av Sweclockers medlemmar
Jag har fått en uppgift som är följande:

Denna uppgiften ska du skapa koden för följande scenario:
1. Skapa en boolsk variabel skriva och tilldela ett värde.
2. Skriv ett villkor som kontrollerar om skriva är sant.
3. Om skriva är sant så skriv ut skriva är sant till skärmen
4. Annars skriver du ut skriva är falskt till skärmen

Så jag förstod att det ville att jag skulle gå utifrån boolean och if-sats funktionen i C#
Min lösning till fråga är följande:

string svar; bool skriva = false; Console.WriteLine("Ange ifall skriva är sant? ja/nej"); svar = Console.ReadLine().ToLower(); //Oavsett om man skriver ja/nej med stora eller små bokstäver svar.Trim(); //Tar bort allt mellanslag/space innan och efter "ja" och "nej" if (svar == "ja") { skriva = true; Console.WriteLine("skriva är sant"); } else { skriva = false; Console.WriteLine("skriva är falskt"); } Console.ReadLine(); } } }

Min första fråga till er kunniga C# använder? har jag gjort rätt?
När jag kör programmet så verkar allt funka fint, men jag får ett felmeddelande rättar sagt varning inne i VBS (The variable 'skriva' is assigned but its value is never used

Jag använder skriva variabel flera gånger i kodningen.

Vad gör jag för fel? tackar och bugar för all tips på förhand.

Snarare kanske tanken är att ni ska tilldela `skriva` utfallet av testet `svar == "ja"`. Detta booleanska uttryck returnerar ju `true` eller `false` beroende på om det stämmer eller ej, så det går konceptuellt att skriva saker som:

bool skriva = (svar == "ja"); if (skriva) { …

vilket jag kan tycka låter mer som det de frågar efter. Man kan tycka att det är onödigt att tilldela `skriva` värdet i stället för att testa uttrycket direkt i `if`-satsen, men tanken är väl att det ska ge en djupare insikt i hur liknande satser fungerar, och att boolenska uttryck returnerar värden.

Se exempelvis bool (C# Reference) [MSDN].

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.