/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
noget i stil med [a-x]
Fra : Kosta


Dato : 17-04-03 19:26

Hej ng!
Som min sidste udvej vil jeg spørge gruppen.
Kan man ikke skrive noget som følgende i c:

if(d = [0-9]) // hvis d er et tal mellem 0 og 9

Jeg har siddet og bøvlet med det i et godt stykke tid

Håber i vil svare.
På forhånd tak
Kosta


 
 
Mads Jensen (17-04-2003)
Kommentar
Fra : Mads Jensen


Dato : 17-04-03 19:53

Hej

> if(d = [0-9]) // hvis d er et tal mellem 0 og 9
> Jeg har siddet og bøvlet med det i et godt stykke tid

Hvad med at checke om tallet er mellem 0 og 9 således:
if(d =< 9 || d >= 0) ?

Ligeledes skulle kunne gøres med check af bogstaver!

/Mads
--
Mads Jensen
http://www.ddfr.dk




Igor V. Rafienko (18-04-2003)
Kommentar
Fra : Igor V. Rafienko


Dato : 18-04-03 10:44

[ Mads Jensen ]

[ ... ]

> Ligeledes skulle kunne gøres med check af bogstaver!


Ikke garantert.





ivr
--
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?

Bertel Lund Hansen (17-04-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-04-03 20:08

Kosta skrev:

>Kan man ikke skrive noget som følgende i c:

Mads har givet dig en løsning.

>if(d = [0-9]) // hvis d er et tal mellem 0 og 9

Pas på med = og ==.

Du kan evt. skrive 'omvendt' fordi du så ofte vil få en advarsel
hvis du skriver forkert. Altså:

   if (d=9) ...

d bliver sat til 9, og parentesen giver altid true. Det er en
fejl.

   if (d==9) ...

Det er korrekt, og den 'normale' måde at skrive på. Men

   if (9=d) ...

giver en compilerfejl fordi 9 ikke er en variabel.

   if (9==d) ...

er også korrekt.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Flare (18-04-2003)
Kommentar
Fra : Flare


Dato : 18-04-03 15:58

> if (9==d) ...
> er også korrekt.

Ja det er nemlig en god huske regl. :)

Anders



Anders Melchiorsen (18-04-2003)
Kommentar
Fra : Anders Melchiorsen


Dato : 18-04-03 16:56

"Flare" <dct_flare@hotmail.com> wrote:

> > if (9==d) ...
> > er også korrekt.
>
> Ja det er nemlig en god huske regl. :)

Jeg synes at det er en dårlig regel.

Det er lettere (for mig, i hvert fald) at læse d==9 end omvendt, da
det er den normale brug. Rådet virker kun ved sammenligninger med
konstanter. Og det er vel egentlig lige så nemt eller svært at huske
at bruge == som det er at huske at bruge en bestemt rækkefølge på
operanderne.

Compilere burde have en advarsel "constant assignment in conditional"
som man kan slå til, og så er den ballade ude af verden; uden behov
for krav om hvordan man skriver sit program.


Anders.
--
Min adresse er gyldig i en uge.
Derefter skal (kun) delen '.dJJJ-YY' fjernes.

Kent Friis (18-04-2003)
Kommentar
Fra : Kent Friis


Dato : 18-04-03 17:21

Den 18 Apr 2003 17:55:59 +0200 skrev Anders Melchiorsen:
>"Flare" <dct_flare@hotmail.com> wrote:
>
>> > if (9==d) ...
>> > er også korrekt.
>>
>> Ja det er nemlig en god huske regl. :)
>
>Jeg synes at det er en dårlig regel.
>
>Det er lettere (for mig, i hvert fald) at læse d==9 end omvendt, da
>det er den normale brug. Rådet virker kun ved sammenligninger med
>konstanter. Og det er vel egentlig lige så nemt eller svært at huske
>at bruge == som det er at huske at bruge en bestemt rækkefølge på
>operanderne.
>
>Compilere burde have en advarsel "constant assignment in conditional"
>som man kan slå til, og så er den ballade ude af verden; uden behov
>for krav om hvordan man skriver sit program.

Det har de fleste compilere også.

-- test.c --
int main() {
int c=7;
   int d=8;
   int e;
   
   if(c=d) e=c;
   return 0;
}
------------
kfr:test$ gcc test.c -Wall
test.c: In function main':
test.c:6: warning: suggest parentheses around assignment used as truth value

Borland C++ havde noget lignende dengang jeg brugte den for 5-7 år siden.

Mvh
Kent
--
F0 0F C7 C8 - Intel Pentium bug

Bertel Lund Hansen (18-04-2003)
Kommentar
Fra : Bertel Lund Hansen


Dato : 18-04-03 17:51

Anders Melchiorsen skrev:

>Jeg synes at det er en dårlig regel.

Jeg bruger den ikke selv, men det hænger sammen med at jeg er
vant til Pascal og har lagt mig fast på den normale rækkefølge.

>konstanter. Og det er vel egentlig lige så nemt eller svært at huske
>at bruge == som det er at huske at bruge en bestemt rækkefølge på
>operanderne.

Måske. Fejlen med lighedstegn er uden samenligning det der har
spildt mest tid for mig med at finde obskure fejl.

>Compilere burde have en advarsel "constant assignment in conditional"

BC5.5 advarer ved tildelinger i en test og insisterer på

   if ((d=9)!=0) ...

hvis man vil benytte fiffet. Advarslen kan slås fra, men det gør
jeg ikke. Siden jeg fik den, har jeg nemlig ikke spildt så meget
tid.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

TheBachelor (19-04-2003)
Kommentar
Fra : TheBachelor


Dato : 19-04-03 10:40

On Thu, 17 Apr 2003 20:26:02 +0200, Kosta <kostabarkaia@softhome.net>
wrote:

>Hej ng!
>Som min sidste udvej vil jeg spørge gruppen.
>Kan man ikke skrive noget som følgende i c:
>
>if(d = [0-9]) // hvis d er et tal mellem 0 og 9
>
>Jeg har siddet og bøvlet med det i et godt stykke tid
Hej, som sædvanlig er der ikke nogen som svarer på det egentlige
spørgsmål (ikke det rigtige svar i hvert fald), men tager derimod en
tangent ud i noget helt andet

Hvis du i C vil kontrollerer om en variabels værdi ligger i et givet
værdiområde [0 ; 9] , ja så er formen:

if( d >= 0 && d <= 9)
{
// Do stuff....
}

Du kan få en warning på d >= 0 hvis du bruger en unsigned type til d,
men det betyder nok ikke noget her.

Mvh
Thomas

news.inet.tele.dk (20-04-2003)
Kommentar
Fra : news.inet.tele.dk


Dato : 20-04-03 01:59

Mange tak for alle jeres svar



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste