News for hackers. Stuff that matters.
Re:Google broke a conditional statement that verifies passwo... by shawnz on Thursday July 22, 2021 @06:36PM (#27925194)
I don't think the other poster was imagining a language that retained compatibility with C, but rather a new language altogether. Of course it would be impossible to change this aspect of the language if retaining compatibility with C was a requirement.

> I honestly don't see why someone would do bitwise operations on boolean

For example, you might want the behaviour shown here of not short-circuiting. Or you might want to create a bitwise function that also allows calling on single-bit (i.e. boolean) values.

Re:Google broke a conditional statement that verifies passwo... by qalmakka on Friday July 23, 2021 @02:47AM (#27927902)
> you might want the behaviour shown here of not short-circuiting. Or you might want to create a bitwise function that also allows calling on single-bit (i.e. boolean) values.

In both cases, I think the risk-benefit ratio is way too skewed towards the risk of creating ugly, hard to detect bugs. When I don't want short circuiting from happening, I just assign the RHS of the expression to a variable beforehand; if I want a boolean to become an integer, I make it explicit with a cast.

Sometimes, using certain C and C++ debatable features feels like attempting to shave yourself using a dagger. The fact you could do that doesn't mean you should, or even that it is a good idea.

Re:Google broke a conditional statement that verifies passwo... by gpderetta on Friday July 23, 2021 @05:08AM (#27928696)
You could make the opposite argument that short-circuiting is the surprising behavior [1] and you should make it explicit with an if.

[1] and in this very thread many people were actually surprised by it!

Re:Google broke a conditional statement that verifies passwo... by qalmakka on Friday July 23, 2021 @06:57AM (#27929321)
Short circuiting for logical operators has existed at least since the first C versions in the early '70s. It's maybe not intuitive, it's probably a crummy idea, but that's how basically everything based on C works (including modern languages like Go and Rust), so there's not that much that can be done about that.

Also, after seeing how weird JavaScript is in comparison, I have to say that C++ definitely isn't the strangest kid in the block when accounting for weirdness and unintuitive behaviours.