On Wed, 21 Nov 2007, Tom St Denis wrote:
Vincent Torri wrote:
hey,
I have an ubuntu 64 bits on my core 2 duo. gcc version is 4.1.2
I compile that code with -Wall:
unsigned int htonl (unsigned int i)
{
i = 0;
return 0;
}
int
main ()
{
unsigned long i;
unsigned int j;
i = 0;
j = htonl (i);
I want to know why you assume j = ... should give a warning but not i = 0.
(hint: what is the type of 0?).
In C, casts are implicit. That's how you can do things like
int ch = 'a';
you can't loose data here, while a cast from a 64bits int to a 32 bits can
loose data.
I was not precise enough : i was expecting a warning on the line where
htonl is called
Vincent Torri