title: Writing an macro that checks if a character is alphabetic
body: <p>I am trying to write macro <code>IS_ALPHABETIC</code> that gives a non-zero value if a character is an alphabetic character. In it I am referring to a <code>IS_LOWER_CASE</code> macro I defined and the <code>uppercase</code> macro I defined earlier.</p>
  
  <p>Here is what I have:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  #define uppercase(n)  ((n) &lt;= 'Z' &amp;&amp; (n) &gt;= ('A') ) 
  #define IS_LOWER_CASE(n) ( ((n) &gt;= 'a') &amp;&amp; ((n) &lt;= 'z') )
  
  #define IS_ALPHABETIC(n) (uppercase(n) || IS_LOWER_CASE(n) ? (n) : 5)
  
  int main()
  {
      char letter = "4";
      printf("%d\n", IS_ALPHABETIC(letter));
  }
  </code></pre>
  
  <p>So essentially the <code>IS_ALPHABETIC</code> macro is supposed to give the value 5 if the argument is an alphabetic character because it checks it if is a lowercase or uppercase alphabetic character, however it gives 5 each time regardless of the argument. </p>
  
  <p>For example, in my case, I entered 4 so it shouldn't give the value 5. It should only when I enter an alphabetic value.</p>
  
  <p>The <code>uppercase</code> and <code>IS_LOWER_CASE</code> macros just check whether the argument is uppercase or lowercase, respectively. </p>
  
  <p>I am not 100% sure if I constructed my <code>IS_ALPHABETIC</code> macro correctly. What is wrong? </p>
  
  <p><strong>I am trying to do it strictly using these specific macros.</strong></p>