分类：电脑/网络-程序设计
问题：c语言基础各位大哥哥姐姐，我是c程序的初学者，下面问一个简单的问 
各位大哥哥姐姐，我是c程序的初学者，下面问一个简单的问题：“%d”，“%c”分别表示什么意思啊，或者百分号加什么别的东西表示什么意思也写下来咯。我主要是在下面这个程序中发现问题的：从中输入一个字符，判断它是否为小写字母，如果是，就将其转换为大写字母；如果不是，就不必转换。最后得到输出字母。main(){       char x;       printf("input a letter:\n");       scanf("%c",&x);       x=x<=90?x:x-32;       pr各位大哥哥姐姐，我是c程序的初学者，下面问一个简单的问题：“%d”，“%c”分别表示什么意思啊，或者百分号加什么别的东西表示什么意思也写下来咯。我主要是在下面这个程序中发现问题的：从中输入一个字符，判断它是否为小写字母，如果是，就将其转换为大写字母；如果不是，就不必转换。最后得到输出字母。main(){       char x;       printf("input a letter:\n");       scanf("%c",&x);       x=x<=90?x:x-32;       printf("%c",x);}我无意将“%c”输入成“%d”后，输入“a”时，输出为“12”，将其改为“%c”，输出为“A”（正常）。请给出详细的解释。
回答："%d","%c"之类的是printf函数中的“格式控制字符串”，用于指定输出的格式。这是C本身的语法规定，知道会用就是了。

另外，C中字符在存储的时候，实际存储的是字符的ASCII码，也就是一个整数值。所以在一定范围内，CHAR型和INT型可以互为通用。

如LZ所说，"%c"输入成"%d"后，输入a时，应该是输出65,而不能输出LZ所说的12。当然如果改为"%C",输出大写的A字符。

%d:以十进制形式输出带符号整数(正数不输出符号)
%o:以八进制形式输出无符号整数(不输出前缀O)
%x:以十六进制形式输出无符号整数(不输出前缀OX)
%u:以十进制形式输出无符号整数
%f:以小数形式输出单、双精度实数
%e:以指数形式输出单、双精度实数
%g:以%f%e中较短的输出宽度输出单、双精度实数
%c:输出单个字符
%s:输出字符串