Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!pacific.mps.ohio-state.edu!linac!att!oucsboss!oucsace!sadkins From: sadkins@oucsace.cs.OHIOU.EDU (Scott W. Adkins) Newsgroups: comp.lang.c Subject: Re: Unnecessary parentheses (Was: Help: VAX C problem) Message-ID: <3176@oucsace.cs.OHIOU.EDU> Date: 9 Apr 91 01:46:39 GMT References: <4072.27f7215c@iccgcc.decnet.ab.com> <1991Apr1.203600.15721@zoo.toronto.edu> <1#.gqcm@rpi.edu> Organization: Ohio University CS Dept., Athens Lines: 66 In article <1#.gqcm@rpi.edu> xor@aix01.aix.rpi.edu (Joseph Schwartz) writes: > >Is this true? The grammar in K&R1 (pg 218) does not require parens in the >return statement. However, the example on page 68 (and indeed all of the >examples in the book) show the parentheses around the expression. > When I learned C, I was taught that parens were unecessary, but it was highly recommended to use them for the same reason parens were to be used with macros (i.e. #define). I have used them ever since and have grown quite attached to them. Anymore, the program just would not look right if I leave the parens out. Oh well :-) >Another place I tend to see unnecessary parens is with the sizeof >operator. You can use "sizeof (typename)" or "sizeof expression"... >I often see "sizeof (expression)"...usually there's no space between >the sizeof and the left paren, which may reinforce the belief that >the parens "belong to" the sizeof operator. > Let us clarify the sizeof operator/function a little bit more. I cannot say that this is strictly K&R, because I can't. I do not have access to such manuals (or am too lazy to find out I have access to them). In many of the C books, particulary Microsoft, they make a distinction between the sizeof operator and the sizeof function. Unfortunatly, they do not mention the difference and do not tell you that parens are needed or not, they just use them. In some of the Turbo C books, a distinction is made and described very clearly. Quoting from "Using Turbo C" by Herbert Schildt, "Turbo C includes the compile-time operator called sizeof that returns the size of the variable of type that is its operand. The keyword sizeof precedes the operand's variable or type name. If sizeof operates on a data type, then the type must appear in parentheses." In this case, they do not indicate that one is a function and the other is an operator. Would someone please help me out here. Is this specific to IBM PC's or is it part of standard C? I am rather curious myself. I have always used the parens because I have never been quite sure when it was safe to not use them (although, now I do...). >Just curious...how often do you folks purposely insert unnecessary parens >into expressions? Sometimes I'll do it just to make the grouping clearer >(just in case the next person to read the code doesn't know all the >precedence rules by heart). I'm talking about expressions in general, >not just in conjunction with return or sizeof. > I use parens like they were going out of style. Another case that parens are more likely to be used, in my case anyway, is the shorthand conditional statements: variable = conditional ? then_part : else_part usually becomes something like: variable = (conditional ? (then_part) : (else_part)) ------------------------------------------------------------------------------- Scott W. Adkins Internet: sadkins@oucsace.cs.ohiou.edu ~~~~~~~~~~~~~~~ ak323@cleveland.freenet.edu (Flame me, not the net!) Bitnet: cs823@ouaccvmb.bitnet ------------------------------------------------------------------------------- You have seen the number of errors you get when writing your program. When you consider that the large quantity of your program is yet to be written, be very thankful that 90% of your errors are not in the part you have so far written.