gcc 4.3.0, -Wconversion: assignment-by operators for shorter types
Andriy Gapon
avg@icyb.net.ua
Wed May 28 06:49:00 GMT 2008
on 27/05/2008 22:00 Andrew Pinski said the following:
> On Tue, May 27, 2008 at 11:56 AM, Andriy Gapon <avg@icyb.net.ua> wrote:
>> Thank you for the explanation! I didn't realize the difference.
>>
>> OTOH, do you think that those arithmetic warnings are practical (as opposed
>> to being correct)?
>
> I think so as the short int case has a defined overflow of the signed
> short type that is SHRT_MAX + 1 is defined while INT_MAX + 1 is not.
I still feel like disagreeing.
Consider this:
*************
int main()
{
short short_x;
short_x = short_x + 1;
short_x += 1;
short_x++;
++short_x;
return 0;
}
*************
$ gcc43 -Wconversion test-conv2.c -o test-conv
test-conv2.cc: In function 'int main()':
test-conv2.cc:5: warning: conversion to 'short int' from 'int' may alter
its value
test-conv2.cc:6: warning: conversion to 'short int' from 'int' may alter
its value
I thought that in C all 4 forms were equivalent and this was purely a
style choice. Now they are different.
--
Andriy Gapon
More information about the Gcc
mailing list