title: Why don't the C or C++ standards explicitly define char as signed or unsigned?
body: <pre><code>int main()
  {
      char c = 0xff;
      bool b = 0xff == c;
      // Under most C/C++ compilers' default options, b is FALSE!!!
  }
  </code></pre>
  
  <p>Neither the C or C++ standard specify char as signed or unsigned, it is implementation-defined. </p>
  
  <p>Why does the C/C++ standard not explicitly define char as signed or unsigned for avoiding dangerous misuses like the above code?</p>