On Thursday, 28 July 2022 at 12:25:05 UTC, pascal111 wrote:
[...]
ofix.c: In function 'fix':
ofix.c:7:3: warning: 'z' is used uninitialized
[-Wuninitialized]
7 | y=modf(x,z);
| ^~~~~~~~~
ofix.c:5:12: note: 'z' was declared here
5 | double y,* z;
| ^
```
I would also like to complain about the double assignment to
`y`.
"fix" function is the C version of BASIC standard one I made,
it's the equivalent of "trunc" in D, but the code I programmed
for "fix" was with TC++ , and it worked in DOS emulators with
no problem,
"Code works" and "Code is correct" are two distinct categories.
The compiler's warnings show that your code is not correct and
not that it will necessarily not work. Incorrect code may work
accidentally.
As a (future) software developer you are required to not just
produce code that "works" "with no problem" but also code that is
correct. "Correct" here means that the code adheres to the
specifications of the language.
Writing incorrect code is like "fixing" a "broken" fuse with tin
foil.
I have no idea how gcc will treat my code, but I think you are
right that some other compilers will refuse such code, because
VC++ 6 refused many of these functions codes I programmed with
TC++ compiler.
The incorrectness of your C code does not depend on the compiler
brand.