PQOTD
-
I'm not quite sure what was unexpected here. If you mean the ProcessCarrierAnimations() never gets called if (more == true) then it really was expected :) However changing || to | will make it called regardless of more's value.
-- "My software never has bugs. It just develops random features."
deflinek wrote:
However changing || to | will make it called regardless of more's value.
Yup! Marc
-
It will run either ProcessFlyouts, or ProcessCarrierAnimations, or neither, and the variable will tell you if it successfully ran either. I would imagine you either want && or |.
Yup. | Marc
-
I assume you meant it to do this:
bool more = ProcessFlyouts();
more = ProcessCarrierAnimations() || more;:laugh: Would do the same in C and C++ as well.
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952) Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
OriginalGriff wrote:
more = ProcessCarrierAnimations() || more;
Quite so. The bitwise | operator solves the problem too. Marc
-
I assume that you want to run the second method if first returns true, if that the case you have to switch the order
bool more = ProcessFlyouts();
more = ProcessCarrierAnimations() || more;I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
Kornfeld Eliyahu Peter wrote:
you have to switch the order
Yes indeed. Or use the bitwise operator. Marc
-
Programming Quiz of the day. I just wrote this code (C#), which did something very unexpected. What was it that it unexpectedly did?
bool more = ProcessFlyouts(); more = more || ProcessCarrierAnimations();
How would you change it to "do the right thing?" Marc
The right hand operand of a || shall not contain side effects
The operands of a logical || shall be primary expressionsThe example you gave is the very reason for the above two rules.
~RaGE();
I think words like 'destiny' are a way of trying to find order where none exists. - Christian Graus Entropy isn't what it used to.
-
OriginalGriff wrote:
more = ProcessCarrierAnimations() || more;
Quite so. The bitwise | operator solves the problem too. Marc
Yes - but I don't like bitwise operators with bools...
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952) Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
-
|
Regards, Nish
Blog: voidnish.wordpress.com Latest article: C++ 11 features in Visual C++ 2013 Preview
-
Kornfeld Eliyahu Peter wrote:
you have to switch the order
Yes indeed. Or use the bitwise operator. Marc
I do not like that change from C/C++...I mean the | and || changes... X|
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
-
The right hand operand of a || shall not contain side effects
The operands of a logical || shall be primary expressionsThe example you gave is the very reason for the above two rules.
~RaGE();
I think words like 'destiny' are a way of trying to find order where none exists. - Christian Graus Entropy isn't what it used to.
-
Programming Quiz of the day. I just wrote this code (C#), which did something very unexpected. What was it that it unexpectedly did?
bool more = ProcessFlyouts(); more = more || ProcessCarrierAnimations();
How would you change it to "do the right thing?" Marc
Though Nish's and OG's examples will work, I think it is symantically better to do this:
bool more = ProcessFlyouts();
bool foo = ProcessCarrierAnimations();
more = more || foo;Less terse code (normally bad) - but explicit in calling
ProcessCarrierAnimations
.PB 369,783 wrote:
I just find him very unlikeable, and I think the way he looks like a prettier version of his Mum is very disturbing.[^]
-
Programming Quiz of the day. I just wrote this code (C#), which did something very unexpected. What was it that it unexpectedly did?
bool more = ProcessFlyouts(); more = more || ProcessCarrierAnimations();
How would you change it to "do the right thing?" Marc
more |= ProcessCarrierAnimations();
?You'll never get very far if all you do is follow instructions.
-
You should be able to glean what the programmer intends to happen from the code. :) Marc
-
There's actually some nice concise uses of
var result = DoSomething() && DoSomethingThatDependsOnIt();
var result = DoSomething() || HandleFailureCase();It's even better in languages where you can use non-boolean types with the boolean operators.
-
You should be able to glean what the programmer intends to happen from the code. :) Marc
Have you been to QA lately? :laugh:
Every day, thousands of innocent plants are killed by vegetarians. Help end the violence EAT BACON
-
Programming Quiz of the day. I just wrote this code (C#), which did something very unexpected. What was it that it unexpectedly did?
bool more = ProcessFlyouts(); more = more || ProcessCarrierAnimations();
How would you change it to "do the right thing?" Marc
var more = more || initalizeMore(); is a common practice in javascript.
Curvature of the Mind now with 3D
-
I do not like that change from C/C++...I mean the | and || changes... X|
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
-
There's actually some nice concise uses of
var result = DoSomething() && DoSomethingThatDependsOnIt();
var result = DoSomething() || HandleFailureCase();It's even better in languages where you can use non-boolean types with the boolean operators.
-
Programming Quiz of the day. I just wrote this code (C#), which did something very unexpected. What was it that it unexpectedly did?
bool more = ProcessFlyouts(); more = more || ProcessCarrierAnimations();
How would you change it to "do the right thing?" Marc
Now, I'm not going to look at the other answers before I post so I don't know if others have got it right, or if there are additional nuggets of information. If ProcessFlyouts returns true then the second test isn't carried out - it's a conditional OR statement. So, if you want ProcessCarrierAnimations to be evaluated, convert it to
more = more | ProcessCarrierAnimations();
-
This isn't a change from C++. It works the same way for both operators. Doesn't it? Now I'm going to have to read up on it, dammit!
- I would love to change the world, but they won’t give me the source code.
You have to! Otherwise you may end up with some mess if updating C/C++ to C# (what I'm doing just now)...
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
-
Though Nish's and OG's examples will work, I think it is symantically better to do this:
bool more = ProcessFlyouts();
bool foo = ProcessCarrierAnimations();
more = more || foo;Less terse code (normally bad) - but explicit in calling
ProcessCarrierAnimations
.PB 369,783 wrote:
I just find him very unlikeable, and I think the way he looks like a prettier version of his Mum is very disturbing.[^]
"Eliminate needless local variables." :-D
You'll never get very far if all you do is follow instructions.