title: Difference between redefinition of array elements in C
body: <p>I am a beginner in C and During Programming I have found this code about bitwise addition</p>
  <pre><code>#define WORD_FROM_BUF(WRD) ((((unsigned char *)(WRD))[0]&lt;&lt;8)|((unsigned char *)(WRD))[1])
  </code></pre>
  <p>I have tried to modify this code to this form</p>
  <pre><code> #define WORD_FROM_BUF(WRD) (((unsigned char *)(WRD[0])&lt;&lt;8)|((unsigned char *)(WRD[1]))
  </code></pre>
  <p><strong>EDIT</strong>
  My problem is similar to these 2 questions
  <a href="https://stackoverflow.com/questions/7186504/c-macros-and-use-of-arguments-in-parentheses">C macros and use of arguments in parentheses- by Palec</a></p>
  <p><a href="https://stackoverflow.com/questions/27752386/can-we-remove-parentheses-around-arguments-in-c-macros-definitions">Can we remove parentheses around arguments in C macros definitions?- by Palec</a></p>
  <p>Thanks everyone for your explanations</p>