Tamsayı tanıtımı açısından, imzalanmış bir tamsayı orijinal türdeki tüm değerleri temsil edemediği durumda ne zaman?Tümleşik tanıtım
K & R, C Programlama Dili, 2. Ed. s. 174
A.6.1 İntegral yükselme
bir karakter, bir kısa tam sayı ya da tam sayı bit alanı, tüm ya da, imza ya da ya da numaralandırma türü bir amacı, bir kullanılabilmektedir Bir tamsayı kullanılabileceği her yerde ifade. Bir int, orijinal türdeki tüm değerleri temsil ederse, o zaman değer int'ye dönüştürülür; aksi halde değer, imzasız int'a dönüştürülür. Bu işlem bütünleyici tanıtım olarak adlandırılır. ,
CHAR_MAX: 127 UCHAR_MAX: 255 SHORT_MAX: 32767 USHORT_MAX: 65535 INT_MAX: 2147483647 UINT_MAX: 4294967295
imzalı int tipi diğer türlerinin herhangi aşan bir konu:
#include <stdio.h> #include <limits.h> int main(void) { printf("CHAR_MAX: %i\n", CHAR_MAX); printf("UCHAR_MAX: %i\n", UCHAR_MAX); printf("SHORT_MAX: %i\n", SHRT_MAX); printf("USHORT_MAX: %i\n", USHRT_MAX); printf("INT_MAX: %i\n", INT_MAX); printf("UINT_MAX: %u\n", UINT_MAX); return 0; }
sonucudur:
Bu kod benim sistem için tiplerinin sınırlarını gösterir O zaman ne zaman UINT_MAX'a geri dönecekti?
Yeni yazdırdığınız değerler farklı sistemlerde farklı olabilir. Sadece bir garantidir, bir kısa <= int ve bir int <= uzun bir örnektir. Böylece, kısa ve int aynı boyuta sahip olabilir. @ minitech adlı gönderi doğru – guitarflow