// filename:c2011-6-4-4-4-ex.c
// original examples and/or notes:
// 		(c) ISO/IEC JTC1 SC22 WG14 N1570, April 12, 2011
// http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
// 			C2011 6.4.4.4 Character constants
// compile and output mechanism:
// 		(c) Ogawa Kiyoshi, kaizen@gifu-u.ac.jp, December.xx, 2013
// compile errors and/or wornings:
// 1	(c) Apple LLVM version 4.2 (clang-425.0.27) (based on LLVM 3.2svn)
// 			Target: x86_64-apple-darwin11.4.2 //Thread model: posix
// 		(c) LLVM 2003-2009 University of Illinois at Urbana-Champaign.
// 2    gcc-4.9 (GCC) 4.9.0 20131229 (experimental)
#include <stdio.h>
#include <wchar.h>

int main(void){
	//Example 1
	char * str = '\0';
	//Example 2
	signed char sc = '\xFF';
	unsigned char uc = '\xFF';
	//Example 3
	signed char c1 = '\123';
	signed char c2 = '\0222';
	wchar_t wt = L'\1234';
	printf("'\0'=%s,%d \n",str,str);
	printf("'\xF'F=%c,%d  \n",sc,sc);
	printf("'\xFF'=%c,%d  \n",uc,uc);
	printf("'\123'=%c,%d  \n",c1,c1);
	printf("'\0222'=%c,%d \n",c2,c2);
	printf("L'\1234'=%lc, %d \n",wt,wt);
return printf("6.4.4.4 Character constants \n");
}
// 1. warning LLVM 3.2 
//c2011-6-4-4-4-ex.c:24:19: warning: multi-character character constant [-Wmultichar]
//        signed char c2 = '\0222';
//                         ^
//c2011-6-4-4-4-ex.c:25:15: warning: extraneous characters in character constant ignored
//        wchar_t wt = L'\1234';
//                     ^
//c2011-6-4-4-4-ex.c:27:10: warning: format string contains '\0' within the string body [-Wformat]
//        printf("\0=%s,%d \xFF=%c,%d \xFF=%c,%d \123=%c,%d \0222=%c,%d L'\1234'=%lc, %d \n",str,str,sc,sc,uc,uc,c1,c1,c2,c2,wt,wt);
//               ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//c2011-6-4-4-4-ex.c:24:19: warning: implicit conversion from 'int' to 'signed char' changes value from 4658 to 50
//      [-Wconstant-conversion]
//        signed char c2 = '\0222';
//4 warnings  generated.
// 2 sarning GCC 4.9
//c2011-6-4-4-4-ex.c:24:19: warning: multi-character character constant [-Wmultichar]
//  signed char c2 = '\0222';
//                   ^
//c2011-6-4-4-4-ex.c:24:2: warning: overflow in implicit constant conversion [-Woverflow]
//  signed char c2 = '\0222';
//  ^
//c2011-6-4-4-4-ex.c:25:15: warning: character constant too long for its type [enabled by default]
//  wchar_t wt = L'\1234';
//               ^
// 2, output LLVM3.2 & GCC4.9
//'''F=?,-1  
//'?'=?,255  
//'S'=S,83  
//'2'=2,50 
//L'S4'=4, 52 
//6.4.4.4 Character constants