webForumDet fria alternativet

1 + 1 = 98

5 svar · 575 visningar · startad av yador

yadorMedlem sedan mars 2004455 inlägg
#1

Hej wf!
Kan någon förklara varför mitt program lägger till 96. Jag är en nybörjare på c++ och fattar absolut ingenting varför den gör det.
Här är källkoden till mitt program.

#include <iostream.h>
int main(){
char a;
cout << "Skriv in a\n";
cin >> a;
char b;
cout << "Skriv in b\n";
cin >> b;
cout << "a + b = " << a+b;
}

Tack på förhand!

PersianBulldogMedlem sedan aug. 20023 005 inlägg
#2

Jag kan visserligen inte C++, men bör inte variablerna a resp b vara av typen int? char är mig veterligen datatypen för tecken således bör int användas för heltal

#include <iostream.h>
int main(){
int a;
cout << "Skriv in a\n";
cin >> a;
int b;
cout << "Skriv in b\n";
cin >> b;
cout << "a + b = " << a+b;
}
jmeMedlem sedan maj 20012 237 inlägg
#3

Därför att varaiblerna a och b är båda char.

När du försökker addera desssa två så adderas deras ascii-värde.

Ascii-värdet för '1' är 49: 1 +1 blir då 49+49=98

Du måste spara inmatningen i en int-variabel.

pröva detta:

char a = '2';
char b = '3';

cout << (int)a + (int)b;

Det blir inte fem utan nåt helt annat...

yadorMedlem sedan mars 2004455 inlägg
#4

ok... de fattade inte jag.. tack för svaren

PeWMedlem sedan juni 200010 432 inlägg
#5

Du löser det enklast genom att först dra bort '0' (tecknet noll) på varje variabel. Char går utmärkt att använda för att spara nuffror, bara man vet hur man lägger in dem/tar ut dem.

BromsMedlem sedan sep. 2002188 inlägg
#6

dock är ju datatypen int att föredra vid sådana enkla puttinuttprogram som ovan nämda skribent avser :)

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)