Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Sun, 25 Sep 2011 07:44:57 -0500 Message-ID: <4E7F224B.4BA0@mindspring.com> Date: Sun, 25 Sep 2011 08:44:59 -0400 From: pete Reply-To: pfiland@mindspring.com Organization: PF X-Mailer: Mozilla 3.04Gold (WinNT; I) MIME-Version: 1.0 Newsgroups: comp.lang.c Subject: Re: To use Perl like conditional assignment in C References: <4E7DC3AA.427D@mindspring.com> <9e7n5aF5qvU1@mid.individual.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 62 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 4.154.223.30 X-Trace: sv3-9lSyT/c7w+jHv7ztqJObRoJNzrdwjPu6WVIL6Bf2eCvMrtC7Yv11DwktDh6n9jRWpbI3q0IPjWs4Pm+!pw3G89v//4Vz7OtS1cnnFMF6HXnrv9URRdYitcXTT9ajk4nsa2KM4DvW6uVj3yZAuBS4iDMHqQgP!yRojTCBOBQ== X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 3026 Xref: x330-a1.tempe.blueboxinc.net comp.lang.c:10916 Uno wrote: > > On 9/24/2011 4:48 AM, pete wrote: > > Ya Shou wrote: > >> > >> Hello, > >> > >> I want to assign an uncertain value to a variable, this variable with > >> values in the configuration file, reads the configuration file > >> through a function to return to the read configuration value, if not > >> configured or the value of non-compliance, will return 0 for failure, > >> when this, I will to give it a default value assigned. > >> > >> However, I found it seem impossible to achieve this in C, but much > >> easier to implement in Perl, see below: > >> > >> cfgval = loadConfig () || DEFAULT_VAL; > >> > >> In C '||' operator does not return the value of the expression which > >> is true, but returns 1 or 0, so that I can not be used in a similar > >> way. I considered a program in C is: > >> > >> cfgval = loadConfig ()? loadConfig (): DEFAULT_VAL; > >> > >> And however, this approach to involve a duplication of code, it is > >> ugly, the other will call loadConfig function twice, inefficient and > >> likely to cause unnecessary accidents. > >> > >> Of course, if / else statement can achieve this functionality, but > >> this method requires an additional variable, and not look simple. As > >> follows: > >> > >> int loadval = loadConfig (); > >> if (loadval! = 0) { > >> cfgval = loadval; > >> } else { > >> cfgval = DEFAULT_VAL; > >> } > >> > >> Or > >> > >> int loadval; > >> cfgval = (loadval! = 0)? loadval: DEFAULT_VAL; > >> > >> I would like to ask you is, in this case, there is nothing more > >> beautiful realization? > > > > cfgval = loadConfig (); > > if (cfgval == 0) { > > cfgval = DEFAULT_VAL; > > } > > > > pete, > > you just posted another syntax other than c tonight in clc; watch it, > there, revolutionary. I don't think that I did that. -- pete