Avatar billede krismort Nybegynder
01. februar 2005 - 19:48 Der er 9 kommentarer

hvad betyder denne sætning ?

Hvad betyder denne sætning ? og hvad kaldes det når man bruger
:  og  ?  findes der andre sådanne operatorer ?

bool b = ( true > false ? true : false );
Avatar billede arne_v Ekspert
01. februar 2005 - 19:50 #1
x = a ? b : c;

svarer til:

if(a)
  x = b;
else
  x = c;
Avatar billede arne_v Ekspert
01. februar 2005 - 19:52 #2
Det forklarer vist bedre end ord.

Jeg kalder det normalt for ?: operatoren.

Det er den eneste operator med 3 argumenter.

Java og C# har den også.
Avatar billede soreno Praktikant
01. februar 2005 - 19:56 #3
"Ternary operator" kaldes den også.
Avatar billede arne_v Ekspert
01. februar 2005 - 19:59 #4
Så må vi jo håbe at der ikke bliver opfundet flere operatorer med 3 argumenter ...
Avatar billede bertelbrander Novice
01. februar 2005 - 20:08 #5
C standarden kalder den for "Conditional operator".
b bliver vist true i krismorts eksempel.
Avatar billede arne_v Ekspert
01. februar 2005 - 20:10 #6
Det hedder den også i JLS (Java Language Specification).
Avatar billede soreno Praktikant
01. februar 2005 - 20:10 #7
Den semantiske forskel er at:
x = a ? b : c;

evaluerer til en expression og:
if(a)
  x = b;
else
  x = c;

evaluerer til et statement.

Så man kan f.eks. skrive:
while(x = 1 ? 1 : 2)
{
    break;
}

Men ikke:
while(if(1) x = 1; else x = 2;)
{
    break;
}

(Eller lign. halvfjollede konstruktioner)
Avatar billede bertelbrander Novice
01. februar 2005 - 20:21 #8
Det smarte er:
FuncMedMangeParametre(x, y, p, n()->pop, y ? v : n);

I stedet for:
if(y)
  FuncMedMangeParametre(x, y, p, n()->pop, v);
else
  FuncMedMangeParametre(x, y, p, n()->pop, n);
Avatar billede arne_v Ekspert
25. februar 2005 - 20:57 #9
krismort>

Tid at få afsluttet her ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester