Article View: comp.sys.atari.st
Article #33650Re: Laser C bug
From: Rick Frostad
Date: Thu, 18 Aug 1988 17:18
Date: Thu, 18 Aug 1988 17:18
84 lines
2552 bytes
2552 bytes
In article <365@polyof.UUCP> jeff@polyof.UUCP (A1 jeff giordano ) writes:
>
>Actually I wouldn't call it a bug, but more a deficience in the
>grammar. The following drove me nuts:
>
> for(x=-1; x<=1; x++) { ... }
>I wanted to loop from -1 to 1. However, the above is ambigous, it is an
>old style declaration. I did not find out until I tried my prog on our
>UNIX system. The UNIX cc gives:
> Warning: oldstyle declaration on line xx.
>
>Laser gives no such warning and actually takes whatever the previous
>value was and drecrements it by one. then does the loop. not what i thought it
>would do.
>
>just thought I should let someone know.
>
>Goeffrey Giordano
>INET: jeff@polyof.poly.edu
>UUCP: ...!iguana!polyof!jeff
>
>Me?!? What do I know? I'm just a brain dead poly student.
This illustrates both a blessing and a curse of the C language. To most
C compilers the following are equivalent:
x -= 1;
x =- 1;
Without the whitespace the compiler interpreted 'x=-1' to be the latter
rather than 'x=(-1)'. Try using parens or whitespace.
This also demonstates one of the possible side-effects of macros. The
following illustrates the point:
#define MINUS_ONE -1
x=MINUS_ONE;
...translated by the pre-processor to:
x=-1;
Again not what was intended.
To minimize the chance of these side-effects, always use parans for signed
numbers; especially when defining them in macros (#defines).
#define MINUS_ONE (-1)
x=MINUS_ONE;
...translated by the pre-processor to:
x=(-1);
In either case the use of whitespace not only eliminates the problem but
also makes the code more readable...
------------------------------------------------------------------------------
iiiiii ssssscccccccc
iiiiii sscccccccccccc
iiiiii cccc ccccc
iiiiii ss cc ccccc
iiiiiis ssccccc
iiiiiisss cccc
iiiiiissssss cc
iiiiii sss cc ccccc
iiiiiis ccc ccccc
iiiiiisss sssccccccccccc
iiiiiissssss sssssccccccccc
- Rick W. Frostad
- ISC Systems Corporation
- E. 22425 Appleway
- Liberty Lake, WA 99019
Technical Details
Message-ID:
<1878@iscuva.ISCS.COM>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!attcan!uunet!iscuva!rickfReferences:
<365@polyof.UUCP>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!attcan!uunet!iscuva!rickf From: rickf@iscuva.ISCS.COM (Rick Frostad) Newsgroups: comp.sys.atari.st Subject: Re: Laser C bug Message-ID: <1878@iscuva.ISCS.COM> Date: 18 Aug 88 17:18:20 GMT References: <365@polyof.UUCP> Organization: ISC Systems Corporation, Spokane, WA Lines: 84