Одна из самых жестких вещей в языке C— это неявное преобразование типов. Если вы не будете следить за этим — у вас будут большие проблемы. Попробуйте запустить этот код, чтобы узреть возможные траблы:
#include <stdio.h>
int main (void)
{
int a = -10;
unsigned int b = 5U;
long int c = a + b; // signed + unsigned
printf ("1) (signed int)a -10 will look as unsigned like this: %u\n", a);
printf ("2) (signed)a(-10) + (unsigned)b(5) = %ld\n", c);
return 0;
}
Приоритеты типов:
bool
char
unsigned char
short int
unsigned short int
int
unsigned int
long int
unsigned long int
long long int
unsigned long long int
float
double
long double
