Hur fungerar static cast?
skriver jag char test = static_cast<char> ('a' + 'b' );
så verkar static_cast titta på ASCII värderna på a och b lägga ihop dem och lägga resultatet i test
men varför gör den denna då static_cast är <char> borde den inte vara av typen int?
När du adderar två chars så kommer dessa konverteras till int innan. Så resultatet av 'a' + 'b' är av typen int, men du vill spara ner det i en av typen char. Därför gör du en static_cast till typen char.
1 tramsinlägg raderat. /moderator
Stokastisk skrev :När du adderar två chars så kommer dessa konverteras till int innan. Så resultatet av 'a' + 'b' är av typen int, men du vill spara ner det i en av typen char. Därför gör du en static_cast till typen char.
Observera att du nu har talat om för kompilatorn att det handlar om 8 bitar (char). I ditt exempel kommer 'a' + 'b' bli 0x61 + 0x62 (97 + 98) = 0xc3 = 195. Svaret ryms inom 8 bitar. Om resultatet blir större än 255 ryms det inte inom char och det blir "overflow" Förstår du?
PeterÅ skrev :
Observera att du nu har talat om för kompilatorn att det handlar om 8 bitar (char). I ditt exempel kommer 'a' + 'b' bli 0x61 + 0x62 (97 + 98) = 0xc3 = 195. Svaret ryms inom 8 bitar. Om resultatet blir större än 255 ryms det inte inom char och det blir "overflow" Förstår du?
Om jag förstår? Mitt exempel? Tänkte du citera magin99 nu, men citerade mig av misstag?
Stokastisk skrev :PeterÅ skrev :Observera att du nu har talat om för kompilatorn att det handlar om 8 bitar (char). I ditt exempel kommer 'a' + 'b' bli 0x61 + 0x62 (97 + 98) = 0xc3 = 195. Svaret ryms inom 8 bitar. Om resultatet blir större än 255 ryms det inte inom char och det blir "overflow" Förstår du?
Om jag förstår? Mitt exempel? Tänkte du citera magin99 nu, men citerade mig av misstag?
Ja, det gjorde jag. Ber om ursäkt. Detta forum är märkt av latprogrammering. Otroligt svårt och blir klumpigt att få fram sitt budskap på ett tydligt sätt. Tips till programmerarna: Kolla in Maringuiden. Där kan man markera valda delar av ett inlägg och citera.