this post was submitted on 20 Jun 2023
16 points (100.0% liked)

C Programming Language

998 readers
1 users here now

Welcome to the C community!

C is quirky, flawed, and an enormous success.
... When I read commentary about suggestions for where C should go, I often think back and give thanks that it wasn't developed under the advice of a worldwide crowd.
... The only way to learn a new programming language is by writing programs in it.

ยฉ Dennis Ritchie

๐ŸŒ https://en.cppreference.com/w/c

founded 1 year ago
MODERATORS
16
submitted 1 year ago* (last edited 1 year ago) by Hammerheart to c/c_lang
 

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.

top 5 comments
sorted by: hot top controversial new old
[โ€“] [email protected] 4 points 1 year ago

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).

[โ€“] lawmurray 4 points 1 year ago

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";.

[โ€“] [email protected] 2 points 1 year ago

Congrats on your first program!

[โ€“] [email protected] 2 points 1 year ago

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.

[โ€“] [email protected] 1 points 1 year ago

I thought it would be "hello world".