char
Eğer signed char
eşdeğerdir:
char
int
yana int
(Tamsayı Tanıtımlar ISO C99 §6.3.1.1 ¶2)
- terfi ve
unsigned
aynı dereceye sahip, int
dönüştürülür unsigned
(Aritmetik Dönüşümler, ISO C99 §6.3.1.8)
char
unsigned char
eşdeğerdir:
char
int
veya unsigned int
ya terfi edilebilir: (tipik olarak, çünkü sizeof(int) > sizeof(char)
) her unsigned char
değerleri temsil edebilir
int
ise, char
int
dönüştürülür. Aksi halde (genellikle sizeof(char)==sizeof(int)
, char
) unsigned
'a dönüştürülür.
- Şimdi
int
veya unsigned
ve unsigned
olduğunu başka birini olduğu bir işlenen var. İlk işlenen, unsigned
'a dönüştürülür.
Tamsayı promosyonlar: int
aksi unsigned
için, orijinal modeli tüm değerlerini tutabilir eğer int
int
dönüştürülür o alt kademedeki bir tür bir ifade.
Aritmetik dönüşümler: Daha büyük bir alana dönüştürmeyi deneyin. İmzalı ve imzasız arasında çakışma olduğunda, daha büyükse (iki türün aynı sıralamaya sahip olması durumunda) işaretsizse, imzasız olarak ilerleyin. Aksi takdirde, her iki türün de tüm değerlerini gösterebileceği durumlarda yalnızca imzalı olarak ilerleyin. işaretsiz bir tamsayı türüne dışı bir aralık değerinin
Dönüşüm etrafı sarılan (modüler aritmetik) ile yapılır:
Dönüşüm tipleri (ISO C99 §6.3.1.3) tamsayı.
Aralık dışı bir değerin imzalı bir tamsayı türüne dönüştürülmesi, uygulamanın tanımlanmasıdır ve bir sinyali artırabilir (SIGFPE gibi).
char y = -1; bir hata atmalıyım diye düşünüyorum. char y = '- 1' yerine – Devjosh
@ Devjosh, hayır yanılıyorsunuz. '-1' geçerli bir karakter değil. – taskinoor
@Devjosh: '' -1 '' bir uyarı atar çünkü aslında '' '' ve '' 1 '' birleştirildi, sayı "-1" değil. İkincisi göz ardı edilir. – Lekensteyn