(1)输出时表达式值的计算顺序是从右到左
#include
int main(){
int i=1;
printf("%d %d %d",i,i+1,i=3); 输出的结果是3,4,3,而不是1,2,3.
return 0;
}
(2)字符和字符串的输出
#include
int main(){
char ch='A';
printf(" 12346578901234567890");
printf("ch=%c------(ch=%%c)\n",ch);输出字符ch
printf("ch=L-----(ch=%L)\n",ch);利用L输出字符ch,占4位,右对齐,所以左面补三个空格。
printf("ch=%-4c----(ch=%%-4c)\n",ch);利用%-4c输出字符ch,占4位,左对齐,所以右面补三个空格。
printf("ch=c----(ch=%c)\n",ch);利用c输出字符ch,占4位,右对齐,因控制符中有0,所以左面补三个0。
printf("st=%s------(st=%%s)\n","CCNU");
printf("st=%6s-----(st=%%6s)\n","CCNU");利用s输出字符串“CCNU”,占6位,右对齐,所以左面补2个空格。
printf("st=.3s--(st=%.3s)\n","CCNU");
利用.3s输出字符串“CCNU”中前3个字符“CCN”,占6位,右对齐,因控制附中有0,所以左面补3个0。
return 0;
}
(3)实数的格式化输出
#include
int main(){
double f=2.5e5;
printf("12345678901234567890\n");
printf("f=f------(f=%f)\n",f);利用f使f的输出占15位,由于没有规定输出小数的位数,默认输出为6位小数,并且是右对齐,因此输出数据的左边要补上两个空格。
printf("f=5f-----(f=%5f)\n",f);和上一行一样,输出也是占15位,右对齐,但因有%0,所以输出数据的左边要补上两个0,而不是两个空格。
printf("f=%-15.0f---(f=%%-15.0f)\n",f);利用%-15.0f使f的输出占15位,但要左对齐,并且不输出小数部分。
printf("f=%#15.0f---(f=%%#15.0f)\n",f);同样要求不输出小数部分,但#要求输出小数点,右对齐。
printf("f=%+15.4f---(f=%%+15.4f)\n",f);格式控制符中有“+”,因此输出了加号。输出总共占15位,其中小数部分占4位,右对齐。
printf("f=.4E----(f=%.4E)\n",f);要求以指数形式输出,并且规定整个输出占15位,其中小数部分占4位。
return 0;
}
(4)无符号整数的格式化输出
#include
int main(){
int a=-1;
unsigned u=32767;
unsigned long L=32768;
printf("a=%d,a=%u-------(a=%%d,a=%%u)\n",a,a);
printf("a=%hx,a=%X------(a=%%hx,a=%%X)\n",a,a);
printf("u=%o",u=%X------(u=%%o,u=%%X),u,u);
printf("u=%#010X--------(u=%%#010X),u");
printf("u=%#10.10X------(u=%%#10.10X),u");
printf("L=%lX-----------(L=%%lX),L");
printf("L=%-#14.10X-----(L=%%-#14.10X)\n",L);
return 0;
}
(5)各种数据类型对应的格式转换符:
%d %i:以十进制形式输出一个整型数据 。 例如:int a=20;
printf("%d",a); :有符号整型
%x %X:以十六进制形式输出一个无符号整型数据。 例如:int a=164;
printf("%x",a);printf("%X",a); :无符号整型
%o(字母o):以八进制形式输出一个无符号整型数据。例如:int a=164;
printf("%o",a); :无符号整型
%u:以十进制形式输出一个无符号整型数据。 例如:int a=-1;
printf("%u",a); :无符号整型
%c:输出一个字符型数据。 例如:char
ch='A';printf("%c",ch); :字符型
%s:输出一个字符串。 例如:printf("my name is
%s","wangjinghua"); :字符串
%f:以十进制小数形式输出一个浮点型数据。 例如:float
f=-12.3;printf("%f",f); :浮点型
%e %E:以指数形式输出一个浮点型数据。 例如:float
f=1234.8998;printf("%e",f); :浮点型
%g %G:按照%f或者%e中输出宽度比较短的一种格式输出 :浮点型
%p:以主机的格式显示指针,即变量的地址。例如:int a=2;
printf("%p",&a); :指针类型
有符号整数的格式化输出
#include
int main(){
int a=123;
long L=65537;
printf("12345678901234567890\n");
printf("a=%d----------(a=%%d)\n",a);
printf("a=m---------(a=%m)\n",a);
printf("a=%+6d--------(a=%%+6d)\n",a);
printf("a=%-6d--------(a=%%-6d)\n",a);
printf("a=%-06d-------(a=%%-06d)\n",a);
printf("a=%+06d-------(a=%%+06d)\n",a);
printf("a=%6.6d-------(a=%%6.6d)\n",a);
printf("a=%+6.6d------(a=%%+6.6d)\n",a);
printf("a=%-6.5d------(a=%%-6.5d)\n",a);
printf("a=%6.4d-------(a=%%6.4d)\n",a);
printf("L=%ld---------(L=%%ld)\n",L);
printf("L=%hd---------(L=%%hd)\n",L);
}
(6)格式控制符个数与表达式个数
#include
int main(){
int a,b,c,d;
a=1,b=2,c=3,d=4;
(printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c);)格式控制符个数多于表达式个数
。
printf("a=%d\nb=%d\nc=%d",a,b,c,d);格式控制符个数少于表达式个数。
格式控制符个数多于表达式个数时,余下的格式控制符的值将不确定。如果格式控制符个数少于表达式个数,则不影响输出。
return 0;
}