Tipu pārveidojumi

Last modified by superadmin on 2018-01-12 20:39

Tipu pārveidojumi

Noklusētie tipu pārveidojumi

Tipu pārveidojumi piešķiršanas komandās kā arī nododot parametrus notiek šādos virzienos:

byte -> short -> int -> long -> float -> double
char -> int -> long -> float -> double
Ievērojiet, ka long mainīgais aizņem divreiz vairāk vietas nekā float, tomēr pārveidošana notiek klusi un bez problēmām:
long x = 0x7fffffffffffffffL;
float f = x;
System.out.println("x = " + x + ", f = " + f);
Augšminētais programmas fragments, kurā mainīgo x inicializē par vislielāko iespējamo long skaitli, izdrukā šādu rezultātu:
x = 9223372036854775807, f = 9.223372E18

Noklusētie pārveidojumi pretējā virzienā (no "lielāka" tipa uz mazāku) nav atļauti. Piemēram: 

short s = 3 * 5; // OK
byte b = 3 * 5; // OK
byte b1 = s; // kļūda - 'possible loss of precision'

short s1 = s << 2 // kļūda - mēģina 'int' piešķirt 'short' mainīgajam
byte b2 = 3 * 5 << 2 // b2 ir 60 (atšķirībā no iepriekšējā piemēra šeit ir konstantes)

byte b2 = (byte)s; // OK, jo pārveidojums ir atklāts
byte b3 = (byte)(200); // OK, bet pazaudē bitus: b3 tagad ir -56

float f = 5.0; // kļūda - mēģina 'double' piešķirt 'float' mainīgajam
float f1 = 5.0F; // OK
Tags:
Created by Kalvis Apsītis on 2008-05-04 16:46
    
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 6.4 - Documentation