İmzalı tam sayı türlerinden dönüştürmeler

İmzalı bir tamsayı bir tamsayıya veya kayan nokta türüne dönüştürüldüğünde, sonuç türünde gösterilebilirse değer değişmez.

İmzalı bir tamsayı daha büyük boyutlu bir tamsayıya dönüştürüldüğünde, değer işaret genişletilmiştir. Daha küçük boyutlu bir tamsayıya dönüştürüldüğünde, yüksek sıralı bitler kesilir. Sonuç, bu örnekte gösterildiği gibi sonuç türü kullanılarak yorumlanır:

int i = -3;
unsigned short u;

u = i;
printf_s( "%hu\n", u );  // Prints 65533

Derleyici imzalı bir tamsayıyı kayan nokta türüne dönüştürdüğünde, özgün değer tam olarak sonuç türünde temsil edilemiyorsa, sonuç sonraki daha yüksek veya daha düşük temsil edilebilir değerdir.

İntegral ve kayan nokta türlerinin boyutları hakkında bilgi için bkz . Temel türlerin depolanması.

Aşağıdaki tabloda, imzalı tam sayı türlerinden dönüştürmeler özetlenmiştir. Türün char varsayılan olarak imzalı olduğunu varsayar. Türün varsayılan değerini işaretsiz olarak değiştirmek için char bir derleme zamanı seçeneği kullanırsanız, bu tablodaki unsigned char tablosunda verilen dönüştürmeler uygulanır.

Microsoft'a Özgü

Microsoft derleyicisinde int ve long benzersiz ancak eşdeğer türlerdir. Bir int değerin dönüştürülmesi, dönüştürme işlemiyle aynı şekilde longdevam eder.

END Microsoft'a Özgü

İmzalı tam sayı türlerinden dönüştürme tablosu

Kaynak Amaç Metot
char 1 short İmza genişletme
char long İmza genişletme
char long long İmza genişletme
char unsigned char Deseni koru; high-order bit loses işlevi olarak işaret biti
char unsigned short Oturum açma-genişletme: short; dönüştürme shortunsigned short
char unsigned long Oturum açma-genişletme: long; dönüştürme longunsigned long
char unsigned long long Oturum açma-genişletme: long long; dönüştürme long longunsigned long long
char float Tam olarak olarak temsil float
char double Tam olarak olarak temsil double
char long double Tam olarak olarak temsil long double
short char Düşük sıralı baytları koru
short long İmza genişletme
short long long İmza genişletme
short unsigned char Düşük sıralı baytları koru
short unsigned short Bit düzenini koru; high-order bit loses işlevi olarak işaret biti
short unsigned long Oturum açma-genişletme: long; dönüştürme longunsigned long
short unsigned long long Oturum açma-genişletme: long long; dönüştürme long longunsigned long long
short float Tam olarak olarak temsil float
short double Tam olarak olarak temsil double
short long double Tam olarak olarak temsil long double
long char Düşük sıralı baytları koru
long short Düşük sıralı sözcüğü koru
long long long İmza genişletme
long unsigned char Düşük sıralı baytları koru
long unsigned short Düşük sıralı sözcüğü koru
long unsigned long Bit düzenini koru; high-order bit loses işlevi olarak işaret biti
long unsigned long long Oturum açma-genişletme: long long; dönüştürme long longunsigned long long
long float olarak floattemsil edin. long Tam olarak temsil edilemiyorsa, bazı duyarlık kaybolur.
long double Tam olarak olarak temsil double
long long double Tam olarak olarak temsil long double
long long char Düşük sıralı baytları koru
long long short Düşük sıralı sözcüğü koru
long long long Düşük sıralı dword'u koru
long long unsigned char Düşük sıralı baytları koru
long long unsigned short Düşük sıralı sözcüğü koru
long long unsigned long Düşük sıralı dword'u koru
long long unsigned long long Bit düzenini koru; high-order bit loses işlevi olarak işaret biti
long long float olarak floattemsil edin. long long Tam olarak temsil edilemiyorsa, bazı duyarlık kaybolur.
long long double olarak doubletemsil edin. long long Tam olarak olarak olarak doubletemsil edilemiyorsa, bazı duyarlık kaybolur.
long long long double olarak doubletemsil edin. long long Tam olarak olarak olarak doubletemsil edilemiyorsa, bazı duyarlık kaybolur.

1 Tüm char girdiler, türün char varsayılan olarak imzalandığını varsayar.

Ayrıca bkz.

Atama dönüştürmeleri