2015-03-06 12:48 GMT+03:00, Edmund Grimley Evans
<[email protected]>:
>> Yes, I know, but I would nevertheless prefer (0 / x) to do the same
>> thing as (y / x) when both x and y are zero at run time. That
>> potentially depends on the target architecture.
>
> To explain a bit better what I mean: On a particular architecture I
> would like each of the following programs to do the same thing when
> invoked with no arguments, which isn't required by any standard that I
> know of, but it's nice to have and easy to achieve.
>
> #include <stdio.h>
> int main(int argc, char *argv[])
> {
>   int a = argc >> 1 & 127;
>   int b = argc >> 8 & 127
>   printf("%d\n", a / b);
>   return 0;
> }
>
> #include <stdio.h>
> int main(int argc, char *argv[])
> {
>   int a = argc >> 1 & 127;
>   int b = argc >> 8 & 127
>   printf("%d\n", a / 0);
>   return 0;
> }
>
> #include <stdio.h>
> int main(int argc, char *argv[])
> {
>   int a = argc >> 1 & 127;
>   int b = argc >> 8 & 127;
>   printf("%d\n", 0 / 0);
>   return 0;
> }
>
> What those programs do does, of course, depend on the architecture.

gcc gives a warning at compilation time about dividing by zero :-)

PS: your solution with memset() is more correct.
A C standard do not say anything about realtion betwean sizeof(int)
and any other integer size.

_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to