Язык Си. Зачем писать U, UL, ULL и т. п. в конце чисел? Приведите пример где ненаписание этих букв даст ошибку.
128u 1024UL 1L 8Lu, 16000000UL, ..
Непонятно зачем, вроде бы и без приписывания этих суффиксов все должно выполняться так как же как и с ними.
Особенно интересует, с практической точки зрения, какие проблемы отсутствие этих суффиксов может вызвать в программах для микроконтроллеров AVR, STM8, STM32?
http://ideone.com/45EtNq - во втором варианте результат неожиданный, правда?
Эти значения имеют смысл только при вычислениях в рамках препроцессирования. В остальных случаях совремнный компилятор скорее всего не позволит выстрелить в ногу.
#include <stdio.h>
#define X1 3000000000
#define X2 3000000000LLU
#define Y1 3000000000
#define Y2 3000000000LLU
int main(void) {
unsigned long long a, b;
a = X1 + Y1;
b = X2 + Y2;
printf("%llu %llu\n", a, b);
getchar();
return 0;
}
Как это - это вызовет в итоге не правельный код !
Вот взять даже 128u - что означает вид переменной char с положительным результатом (то есть в памяти число записываеться не так как при обычном char ) и если прочитать в итоге его как просто char то получим вообще занчение -128 !
unsigned char num= 128u ;
char num2 = (signed char) num ;
в итоге получишь число отрицательное - 128
Вообщем суть в том что байтовая информация цифр храниться по разному и если в итоге ее считать не правельно или представить копилятору не правельно то и в итоге будете потом искать ошибку очень долго !
Ѽ. u+047c КАК НАПИСАТЬ