[deleted]
Comment on if statement == false
stevedice@sh.itjust.works 11 months ago
No, they’re not.
Let’s assume they are. Let funky function be defined as:
int funky() { a=0 b=1 if ( a==1 ) { b=1 } return(a) }
Since a==1 if, and only if b=1, in particular a==1 if b=1. We have b=1, therefore a==1. It follows funky will always return 1 but… it doesn’t. QED.
ninja@lemmy.world 11 months ago
stevedice@sh.itjust.works 11 months ago
I agree but it’s also what the original meme is doing. I thought we were all shitposting here.
nickwitha_k@lemmy.sdf.org 11 months ago
I’m pretty sure that
funky()would always return0, as defined. I’ll pseudocide that up:The
ifin your function can never be reached, without some weird manipulation of the value ofathat breaks variable scoping in most syntaxes.I think that I see your logic but it is syntactically incorrect:
In most syntaxes, this is a conditional execution and value assignment. That is, the code in curly braces only gets executed, if the conditional evaluates as true. If the conditional evaluates as true, the code is executed, assigning the value 1 to the variable
b.It does NOT imply that the assignment of the value 1 to the variable
bis a conditional requiring the assignment of the value 1 to the variableb.Remember:
=in most programming is NOT an equality symbol but a value-assigment symbol. It would be nice if people creating the initial syntaxes used something else that is harder to confuse but they didn’t.ikilledlaurapalmer@lemmy.world 11 months ago
Yeah, I’m not sure what the original intent was here. If we’re missing something I’d like to know
stevedice@sh.itjust.works 11 months ago
Yes, I know, that’s the point. Funky is specifically constructed to always return 0. Then we assume “if” and “if, and only if” are equivalent and by following that assumption of its logical conclusion, we deduce that funky returns 1. Therefore, our assumption was incorrect because 0≠1. It follows that “if” isn’t equivalent to “if, and only if”. Also, it’s just a shitpost.
nickwitha_k@lemmy.sdf.org 11 months ago
If reading the code as non-programming logic, that conclusion makes sense, yes. However,
if, in most syntaxes, is a type of flow control. What it wraps has no meaning to theifstatement itself. Reading it through the lens of an interpreter/compiler makes it clear. The statement is approximately:To one not familiar with how programs are executed, it would make sense that the return value could be 1. But understanding how flow control works in programming, makes this interpretation a challenge.
stevedice@sh.itjust.works 11 months ago
I don’t think you’re picking up what I’m putting down. I’m not arguing that the return value can be 1, I’m well aware that it can’t — I wrote the function so that it will always return 0. It only returns 1 if we make an incorrect assumption (and mix up semantics with formal logic, but that’s another conversation), the incorrect assumption being “if is equivalent to if, and only if”