Re: [cc65]Unusuall?

Date view Thread view Subject view

From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 2001-01-02 20:51:40


On Tue, Jan 02, 2001 at 07:15:32PM +0100, Spiro Trikaliotis wrote:
> Forgive me, but if my memory serves me right, C (at least pre-ANSI) does NOT
> define the order in which this will be evaluated, so the second part (c!=62)
> might be evaluated BEFORE the first part with the assignment, in that case,
> this will NOT evaluate to the expected condition.

That is incorrect. C evaluates boolean expressions as shortcuts with each
boolean operator being a sequence point. If the left operand is enough to
determine the value of the expression result, all others will not get
evaluated. Because of this, one can write things like

	char* P;
	...
	if (P && *P != '\0')

Code like

       	int C;
       	while ((C = getchar()) != '\0' && C != EOF) {
	    ...
	}

is absolutely correct C code.

Regards


	Uz


--
Ullrich von Bassewitz                                  uz_at_musoftware.de
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.


Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2001-12-14 22:05:37 CET