title: error C2446: '==' : no conversion from 'int *' to 'int'
body: <p>I want to compare a number with a address.
  Here's the code.</p>
  
  <pre><code>#include "stdio.h"
  int main (void) {
      int a = 1;
      printf("%#x\n", &amp;a);  // The address of a is 0x18ff44
      int  b = 0x18ff44;
      if (b == &amp;a) {        //error
         printf("no\n"); 
      }
      return 0;
  }
  </code></pre>
  
  <p>I want to know whether I can compare a number with a address.</p>
  
  <p>error: error C2446: '==' : no conversion from 'int *' to 'int'</p>
  
  <p>I did some research and I have two hypothesises:</p>
  
  <ul>
  <li><p>maybe because different datatype can't compare. </p>
  
  <p>But I tried to compare datatype of float with char, and the code is compielred correct.</p></li>
  <li>I learned the compiler error c2446 of MSDN. The translation is that "The compiler is unable to convert type1 to type2. "</li>
  </ul>
  
  <p>My hypothesises is that when execute relational operation ,the compiler need to covert type1 to type2. But the conversion of 'int *' to 'int' does not make sense. <strong>My question: Is this hypothesis correct? And if it's not, why does that happens?</strong></p>
  
  <p>Compiler Info: VC 6.0 downloaded from <a href="https://www.microsoft.com" rel="nofollow noreferrer">https://www.microsoft.com</a></p>