title: Why is there no ASCII or UTF-8 character literal in C11 or C++11?
body: <p>Why is there no UTF-8 character literal in C11 or C++11 even though there are UTF-8 string literals? I understand that, generally-speaking, a character literal represents a single ASCII character which is identical to a single-octet UTF-8 code point, but neither C nor C++ says the encoding has to be ASCII.</p>
  
  <p>Basically, if I read the standard right, there's no guarantee that <code>'0'</code> will represent the integer 0x30, yet <code>u8"0"</code> must represent the char sequence 0x30 0x00.</p>
  
  <p>EDIT:</p>
  
  <p>I'm aware not every UTF-8 code point would fit in a char. Such a literal would only be useful for single-octet code points (aka, ASCII), so I guess calling it an "ASCII character literal" would be more fitting, so the question still stands. I just chose to frame the question with UTF-8 because there are UTF-8 string literals. The only way I can imagine portably guaranteeing ASCII values would be to write a constant for each character, which wouldn't be so bad considering there are only 128, but still...</p>