'goto" gone from computer languages or is it!

Sean 'Captain Napalm' Conner spc at conman.org
Fri May 13 14:14:37 CDT 2005


It was thus said that the Great Dave Dunfield once stated:
> 
> >> >>   So, to tie this in with the Zen Koan threads, what is the result of
> >> >>
> >> >> 	int i = 0;
> >> >> 	printf("%d %d %d\n",i++,i++,i++);
> >> >>
>
> Officially this type of code (that which modifies an Lvalue multiple times
> within the same sequence interval) invokes "undefined behaviour", which
> means that the compiler can do "anything" - although highly unlikely, the
> compiler can happily return 6 6 6 in this case, and leave the value of i at
> 31415 (or anything else) ... and be performing in a perfectly legal sense
> - undefined operation is exactly that. The function performed is not defined
> by the standard.

  *Ding ding ding* we have a winner!  

> On other words, it's not valid 'C' (although it is syntactically correct, and
> most compilers will accept it without a diagnostic).

  At least the later version of GCC pick up on it:

	[spc]tech1:/tmp>gcc --version
	gcc (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
	Copyright (C) 2004 Free Software Foundation, Inc.
	This is free software; see the source for copying conditions.  There is NO
	warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

	[spc]tech1:/tmp>gcc -Wall -ansi -pedantic -c t.c
	t.c: In function `main':
	t.c:8: warning: operation on `i' may be undefined
	t.c:8: warning: operation on `i' may be undefined
	[spc]tech1:/tmp>
  
> I think the OP's point has been completely missed (that a valid program is a
> inherently very definitive and detailed specification).

  What I was commenting on was this statement by John Hogerhuis:

> I think the programming language is the most
> succinct, clear, and unambiguous specification language imaginable.
> Almost always each construct has one and only one interpretation. 

  Which really depends upon the language.  

  -spc (And C leaves some stuff underspecified like this to help compiler
	writers wring performance out of compiled code ... )



More information about the cctalk mailing list