推荐:
https://blog.csdn.net/jisuanji198509/article/details/80466546
https://www.cnblogs.com/qq329914874/p/5987583.html
已整理:
如果在程序中要使用 printf 或者 scanf,那么就必须要包含头文件 stdio.h。
A. printf的格式
printf 函数的原型为:
# include <stdio.h>
int printf(const char *format, ...);
1) printf("字符串\n");
# include <stdio.h>
int main(void)
{
printf("Hello World!\n"); // \n表示换行
return 0;
}
其中\n表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。
其中 n 是“new line”的缩写,即“新的一行”。
2) printf("输出控制符",输出参数);
# include <stdio.h>
int main(void)
{
int i = 10;
printf("%d\n", i); /*%d是输出控制符,d 表示十进制,后面的 i 是输出参数*/
return 0;
}
控制符 说明
%d 以十进制的形式输出。
%ld 输出长整形数据
%md m为指定的输出字段的宽度。
若数据的位数<m,则左端用空格补充;若>m,则按实际位数输出。
%u 输出无符号整型(unsigned)。
输出无符号整型时也可以用%d,这时是将符号换成有符号,然后输出。
%c 输出一个字符。
%f 输出实数,包括单精度和双精度,以小数形式输出。
不指定字段宽度,默认:整数部分全部输出,小数部分输出6位,超过6位部分四舍五入。
%.mf 输出实数,小数点后保留m位。注意:m前面有个点。
%x 以十六进制的形式输出,控制符还可以是 %X、%#x、%#X。
%o 以八进制的形式输出
3) printf("输出控制符1 输出控制符2…", 输出参数1, 输出参数2, …);
# include <stdio.h>
int main(void)
{
int i = 10;
int j = 3;
printf("%d %d\n", i, j);
return 0;
}
输出控制符 1 对应的是输出参数 1,输出控制符 2 对应的是输出参数 2……编译、链接、执行后我们看一下输出结果:
10 3
注意一下,为什么 10 和 3 之间有一个空格?
因为上面 %d 和 %d之间有空格,
printf 中双引号内除了输出控制符和转义字符\n外,
所有其余的普通字符全部都原样输出。
4) printf("输出控制符 非输出控制符",输出参数);
比如:
# include <stdio.h>
int main(void)
{
int i = 10;
int j = 3;
printf("i = %d, j = %d\n", i, j);
return 0;
}
这时我们再编译、链接、执行一下:
i = 10, j = 3
B. %x、%X、%#x、%#X 的区别
# include <stdio.h>
int main(void)
{
int i = 47;
printf("%x\n", i);
printf("%X\n", i);
printf("%#x\n", i);
printf("%#X\n", i);
return 0;
}
在 VC++ 6.0 中的输出结果:
2f
2F
0x2f
0X2F
从输出结果可以看出:
如果是小写的x,输出的字母就是小写的;
如果是大写的X,输出的字母就是大写的;
如果加一个#,就以标准的十六进制形式输出。
C. 如何输出 %d、\ 和双引号
要输出%d只需在前面再加上一个%,
要输出\只需在前面再加上一个\,
要输出双引号也只需在前面加上一个\即可。
程序如下:
# include <stdio.h>
int main(void)
{
printf("%%d\n");
printf("\\\n");
printf("\"\"\n");
return 0;
}
在 VC++ 6.0 中的输出结果是:
%d
\
""