Forkortelse af flere variable der giver det samme

Tags:    c

<< < 12 > >>
Jeg sidder og arbejder lidt i C, og er stødt ind i et problem.. Håber folk kan hjælpe mig med det

Jeg har flere variable som gerne skulle være 0 alle sammen, men i stedet for at skrive hours == 0 && minutes == 0 && seconds == 0 er der så ikke en nemmere måde at gøre det på..

Fold kodeboks ind/udC kode 


Lige nu skriver den at Evertything is zero bare 1 af dem er 0..



11 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 24 karma
Sorter efter stemmer Sorter efter dato
Eller:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 21.09.2011 21:23 af Bruger #2695
Det her burde ellers gøre hvad du ønsker:

Fold kodeboks ind/udC kode 


Hvis der er bare den mindste bit der ikke er 0 i en af de 3 værdier så vil det ikke være lig med 0.

EDIT:
Havde åbenbart ikke set Roberts indlæg. Men hans burde virke.



Indlæg senest redigeret d. 20.09.2011 22:52 af Bruger #14645
I praksis ville jeg aldrig lave den slags kode, det er svært at læse og afspejler ikke intensionen.



Jeg er enig med Bertel.

Koden bliver måske kortere, men ikke mere læselig, og nogen ved ikke engang hvad det gør (også en grund til at det fejlede), så det skaber bare forvirring.

Så hellere:
Fold kodeboks ind/udKode 


Kort og klart.



eller måske

Fold kodeboks ind/udKode 




edit, var en anden der var hurtiger :D



Indlæg senest redigeret d. 20.09.2011 19:56 af Bruger #3427
eller måske

Fold kodeboks ind/udKode 


ja, desto korrere koden er desto bedre er det.



Eller:
Fold kodeboks ind/udKode 


Den virker som en eller funktion, så hvis bare en af dem er 0 så skriver den det.. Det skal virke sådan at hvis de alle er 0 så sker det.

Men mange tak!! Kom i tanke om at || er en eller funktion.. Så i stedet for at sætte | ind så brugte jeg bare & i stedet for.. Det gjorde så at det passer.

Edit..

Det virker desværre ikke helt alligevel, for hvis bare sekunder er 0 så skriver den alligevel "Everything is zero"



Indlæg senest redigeret d. 20.09.2011 21:55 af Bruger #16788
Den virker som en eller funktion, så hvis bare en af dem er 0 så skriver den det.. Det skal virke sådan at hvis de alle er 0 så sker det.


Nej, det er en bitvis or (i modsætning til en boolean or). Det vil sige, at alle 1 bits i hver af de tre variable bliver til 1 bits i det endelige resultat.

Prøv selv.



Roberts udgave bør virke. Den har den fordel at den også virker hvis et af tallene skulle være negative, hvorimod Michaels udgave vil give forkert resultat, hvis f.eks. min er -1 og hour er 1.



<< < 12 > >>
t