2022-10-25
This commit is contained in:
		
							parent
							
								
									5a68fb5229
								
							
						
					
					
						commit
						369a286ab7
					
				@ -16,6 +16,68 @@ ideas' witlessness;
 | 
			
		||||
ideas' witnesses;
 | 
			
		||||
ideas-
 | 
			
		||||
 | 
			
		||||
2022-10-25
 | 
			
		||||
 | 
			
		||||
	i am logical, if not for time
 | 
			
		||||
 | 
			
		||||
	In C conditional logic is usually expressed in if statements. The very
 | 
			
		||||
narrow textbook example of this is thus:
 | 
			
		||||
 | 
			
		||||
if (condition) {
 | 
			
		||||
	do_something();
 | 
			
		||||
} else {
 | 
			
		||||
	do_another_thing();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	I don't like this. There are a couple of supposed truths within this
 | 
			
		||||
example that are false:
 | 
			
		||||
	- brackets are necessary for the if statement body (they aren't)
 | 
			
		||||
	- ifs are the only way to perform conditional logic in C (they aren't)
 | 
			
		||||
	  this may not be stated outright in the example, but it's implicit in
 | 
			
		||||
	  that it's the only way textbooks will show much logic
 | 
			
		||||
 | 
			
		||||
	This "blah" doesn't exist to express solid facts, just my loose and
 | 
			
		||||
flimsy opinions and experiences.
 | 
			
		||||
 | 
			
		||||
	Here are four ways to do something in C that are each functionally
 | 
			
		||||
identical to each other:
 | 
			
		||||
 | 
			
		||||
bool aisfive(bool c, int *a) {
 | 
			
		||||
	if (c == 1) {
 | 
			
		||||
		*a = 5;
 | 
			
		||||
	} else {
 | 
			
		||||
		*a = 6;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return a;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool aisfive(bool c, int *a) {
 | 
			
		||||
	if(c)
 | 
			
		||||
		*a = 5;
 | 
			
		||||
	else
 | 
			
		||||
		*a = 6;
 | 
			
		||||
 | 
			
		||||
	return a;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool aisfive(bool c, int *a) {
 | 
			
		||||
	*a = c ? 5 : 6;
 | 
			
		||||
 | 
			
		||||
	return a;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool aisfive(bool c, int *a) {
 | 
			
		||||
	*a = 5 + !c;
 | 
			
		||||
 | 
			
		||||
	return a;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	I prefer the bottom-most example but the difference won't matter to a
 | 
			
		||||
good compiler. To me, algebraic expression is just as good as if-else
 | 
			
		||||
expression. But I'm an Internet crank that's still programming in C.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
2022-10-24
 | 
			
		||||
 | 
			
		||||
	i will twerk now, get in the conga line
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user