Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Aug 2001 11:28:01 -0400
From:      Leo Bicknell <bicknell@ufp.org>
To:        "hackers@FreeBSD.ORG" <hackers@FreeBSD.ORG>
Subject:   Re: the =+ operator
Message-ID:  <20010810112801.A21795@ussenterprise.ufp.org>
In-Reply-To: <200108101446.HAA99867@safety.net>; from les@safety.net on Fri, Aug 10, 2001 at 07:46:16AM -0700
References:  <3B73F0BC.548D40B3@home.com> <200108101446.HAA99867@safety.net>

next in thread | previous in thread | raw e-mail | index | archive | help

Ok, I had to go try this out for my own:

% cat test.c


int main(void) {
  int a, b;

  a = 1;
  printf("a = %d\n", a);
  a += 1;
  printf("a = %d\n", a);
  a =+ 1;
  printf("a = %d\n", a);
  a = +1;
  printf("a = %d\n", a);
  b = 1;
  a =+ b;
  printf("a = %d\n", a);
  a =- b;
  printf("a = %d\n", a);
}

% cc -Wall test.c
test.c: In function `main':
test.c:7: warning: implicit declaration of function `printf'
test.c:17: warning: control reaches end of non-void function

% ./a.out
a = 1
a = 2
a = 1
a = 1
a = 1
a = -1

I don't know how hard this would be to do in the compiler, but
perhaps there should be a warning available for "a =+ b", but not
for "a = +b".  Maybe that would be better done in lint? I have to
think 99% of the the times this shows up in a program it's a   
bug/mistake.

Check out the reference below.  In particular, the indent source
is interesting, as is bc.  

% find . -name "*.[ch]" -print | xargs fgrep "=+"
./contrib/bc/bc/util.c:  printf ("Old assignment operatiors are valid. (=-, =+, ...)\n");
./contrib/cvs/src/wrapper.c:    for(temp=++line;*line && (*line!='\'' || line[-1]=='\\');++line)
./contrib/libpam/libpam/pam_misc.c:      for (end=++from; *end && *end != ']'; ++end) {
./contrib/nvi/vi/vs_msg.c:#define       DIVIDESTR       "+=+=+=+=+=+=+=+"
./contrib/tcp_wrappers/percent_x.c:    static char ok_chars[] = "1234567890!@%-_=+:,./\
./lib/libc_r/uthread/uthread_kern.c: _thread_run->last_inactive =+
./lib/libc_r/uthread/uthread_kern.c: _thread_run->last_inactive =+ UINT_MAX + 1;
./lib/msun/src/e_asin.c:                    /* asin(1)=+-pi/2 with inexact */
./lib/msun/src/e_asinf.c:               /* asin(1)=+-pi/2 with inexact */
./lib/msun/src/e_atan2.c:               case 1: return y;       /* atan(+-0,+anything)=+-0 */
./lib/msun/src/e_atan2f.c:              case 1: return y;       /* atan(+-0,+anything)=+-0 */
./lib/msun/src/e_rem_pio2.c:    if(ix<0x4002d97c) {  /* |x| < 3pi/4, special case with n=+-1 */
./lib/msun/src/e_rem_pio2f.c:   if(ix<0x4016cbe4) {  /* |x| < 3pi/4, special case with n=+-1 */
./lib/msun/src/e_sqrt.c:            return x*x+x;               /* sqrt(NaN)=NaN, sqrt(+inf)=+inf
./lib/msun/src/e_sqrtf.c:           return x*x+x;               /* sqrt(NaN)=NaN, sqrt(+inf)=+inf
./lib/msun/src/s_erf.c:     return (double)(1-i)+one/x; /* erf(+-inf)=+-1 */
./lib/msun/src/s_erff.c:            return (float)(1-i)+one/x;  /* erf(+-inf)=+-1 */
./lib/msun/src/s_log1p.c:               if(x==-1.0) return -two54/zero; /* log1p(-1)=+inf */
./lib/msun/src/s_log1pf.c:              if(x==(float)-1.0) return -two25/zero; /* log1p(-1)=+inf */
./lib/msun/src/s_tanh.c:            if (jx>=0) return one/x+one;    /* tanh(+-inf)=+-1 */
./lib/msun/src/s_tanhf.c:           if (jx>=0) return one/x+one;    /* tanh(+-inf)=+-1 */
./release/picobsd/tinyware/oinit/oinit.c: printf("\n\n+=========================================================+\n");
./release/picobsd/tinyware/oinit/oinit.c: printf("+=========================================================+\n\n");
./usr.bin/indent/lexi.c:            *e_token++ = '=';   /* Flip =+ to += */
./usr.bin/indent/lexi.c:            *e_token++ = '=';   /* Flip =+ to += */
./usr.sbin/pcvt/vttest/main.c:ESC   1!   2@   3#   4$   5%   6^   7&   8*   9(
0)   -_   =+   `~  BS

-- 
Leo Bicknell - bicknell@ufp.org
Systems Engineer - Internetworking Engineer - CCIE 3440
Read TMBG List - tmbg-list-request@tmbg.org, www.tmbg.org

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010810112801.A21795>