|
Titlul: Caractere Scris de: CHERA Laurentiu din Februarie 08, 2012, 18:36:17 Salut! Ce parere aveti de urmatoarea problema:
Cod: cout<<(int)'\0342'<<endl; Cod: cout<<(int)(char)0342; In primul rand 0342 = 226 in baza 10; Cum in char nu putem avea valori mai mari de 127 atunci ne confruntam cu o depasire care e tratata cilic de compilator datorita modificarii bitului de semn, adica -128 + 98 = -30; Titlul: Răspuns: Caractere Scris de: c a e n din Februarie 08, 2012, 19:10:33 În primul caz ai două caractere: '\034' și '2'. Rezultatul e "implementation-defined". În al doilea caz ai doar caracterul '\342', care se comportă cum știi.
Titlul: Răspuns: Caractere Scris de: George Marcus din Februarie 08, 2012, 19:28:41 Ce ai scris tu acolo '\0342' e o constanta de mai multe caractere. E cam ciudat comportamentul lor, dar e ceva de genul:
'abc' = 'a' * 256^2 + 'b' * 256 + 'c' La tine face cam asa: '\0342' = '\034' * 256 + '2' = 28 * 256 + 50 = 7218 Daca ar fi fost '\03421' ar fi facut: '\03421' = '\034' * 256^2 + '2' * 256 + '1' = 28 * 65536 + 50 * 256 + 49 = 1835008 + 12800 + 49 = 1847857 Titlul: Răspuns: Caractere Scris de: CHERA Laurentiu din Februarie 08, 2012, 19:50:12 Da, multumesc! :D
|