I was looking over the first kata i did on codewars, and I thought it would be fun to try and solve it in C. The object was to return a string based on a boolean input. it took a lot of trial and error, googling, chat gippity, but I eventually got it to work. I am still focused on learning python, but I've had it in my mind that I should branch out once I've reached a competence plateau in python. I'm nowhere near that plateau yet, but this seemed simple enough to warrant the necessary investment in time to accomplish it.
// C:
#include <stdbool.h>
// FIRST EVER C PROGRAM
const char *bool_to_word (bool value){
// you can return a static/global string or a string literal
if (value == 1){
return "Yes";
}
else{
return "No";
}
}
I realize this is pretty trivial, but still, it's a milestone for me and I wanted to do my part to get the ball rolling on this community.
Welcome to C! Tiny suggestion to add to other comments: value is already Boolean, so there's no need to write if (value == 1), you can just write if (value). Similarly, following @[email protected]'s suggestion of using the ternary operator, you can write return value ? "Yes" : "No";.
Well done. Keep on practising and improving and your life will change. C is love, C is life.
Your code raised a question that never came to my mind before. What actually happens here?
To my understanding there are two strings "Yes" and "No" within the scope of this function. But are they accessible from outside of the function?
After looking it up, it appears to be totally valid: Lifetime of a string literal in C
That's probably what's implied in the comment line directly above the if.
For these kinds of expressions, I really like to use the ternary operator. I find that more readable. An if statement with a condition and two simple possible return values like your code can be written as
return (value == 1) ? "Yes" : "No";
The return keyword is not part of the ternary operator. The definition is "<condition> ? <value if true> : <value if false>".
As the operator is an expression, the result of it can be assigned to a variable of course. But in your code example there is no need for a local variable to hold the result so it can just be returned.
If the expressions for the condition, or true or false results get too complicated I'll switch to if/else for readability (the question mark or the colon might get harder to spot).