title: 64 Bit digitsum (C) [Feel Free to edit my English]
body: <p>This is part of my assignment, but I don't know why the output is not correct. Help?</p>
  
  <blockquote>
  <pre><code>/**
   * Create a function called digitsum that takes an long integer (64                     bits) and
   * sums the value of each of its digits. i.e. the number 316 should sum to
   * 3+1+6 or 10. Return the sum as the value of the function.
   * Hints:
   * - If the number is negative, make it positive before anything else.
   * - n % 10 will give you the value of the first digit.
   * - n / 10 will shift the integer to the right one digit.
   * - You're done summing when n is zero.
   */
  </code></pre>
  </blockquote>
  
  <p>Example input/output:</p>
  
  <blockquote>
  <pre><code> * ./p2 316
   * num = 316, sum = 10
   * ./p2 -98374534984535
   * num = -98374534984535, sum = 77
   */
  </code></pre>
  </blockquote>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  
  int digitsum(int n){ //first try using function
      if (n % 10)
          return digitsum == n % 10;
      else if (n / 10)
          return digitsum == n / 10; 
      else     
          return 0;  //done summing when n is zero.
  }
  
   // Read down in the comments and do **NOT** modify main below.
  
  
  int main(int argc, char **argv)
  {
      int64_t n;
  
      if (argc &lt; 2) {
          printf("usage: %s &lt;int&gt;\n", argv[0]);
          exit(1);
      }
      n = atoll(argv[1]);
  
      printf("num = %ld, sum = %d\n", n, digitsum(n));
      return 0;
  }
  </code></pre>
  
  <p>When I use gcc to compile, and it is only show the output "sum is 310" instead of "sum is 10"? I am new to C programming and I'm still studying.. </p>