Top.Mail.Ru
Ответы

Язык Си. Зачем писать U, UL, ULL и т. п. в конце чисел? Приведите пример где ненаписание этих букв даст ошибку.

128u 1024UL 1L 8Lu, 16000000UL, ..

Непонятно зачем, вроде бы и без приписывания этих суффиксов все должно выполняться так как же как и с ними.

Особенно интересует, с практической точки зрения, какие проблемы отсутствие этих суффиксов может вызвать в программах для микроконтроллеров AVR, STM8, STM32?

По дате
По Рейтингу
Аватар пользователя
Новичок
9лет

http://ideone.com/45EtNq - во втором варианте результат неожиданный, правда?

Аватар пользователя
9лет

Эти значения имеют смысл только при вычислениях в рамках препроцессирования. В остальных случаях совремнный компилятор скорее всего не позволит выстрелить в ногу.

Аватар пользователя
Высший разум
9лет

#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;
}

Аватар пользователя
Просветленный
9лет

Как это - это вызовет в итоге не правельный код !

Вот взять даже 128u - что означает вид переменной char с положительным результатом (то есть в памяти число записываеться не так как при обычном char ) и если прочитать в итоге его как просто char то получим вообще занчение -128 !

unsigned char num= 128u ;
char num2 = (signed char) num ;

в итоге получишь число отрицательное - 128
Вообщем суть в том что байтовая информация цифр храниться по разному и если в итоге ее считать не правельно или представить копилятору не правельно то и в итоге будете потом искать ошибку очень долго !

Аватар пользователя
Знаток

Ѽ. u+047c КАК НАПИСАТЬ