#include <stdio.h>
#define FORMAT "%s! C is cool!\n"
int main(void)
{
printf(FORMAT,FORMAT);
这个打印结果
把FORMAT直接用后面的串替换
相当于
printf("%s! C is cool!\n","%s! C is coll!\n");
打印效果就是用后面的串替换掉前面串中的%s就是了,即:
%s! C is coll!\n! C is cool!\n,\n表示换行,所以结果就是
%s! C is coll!
! C is cool!
printf只有前面的串中的%是格式化符号,后面的串只是内容
明白了吗?
替换后是这样的:
printf("%s! C is cool!\n","%s! C is cool!\n");
第一个%s被第二那一大串替代了
你这代码够绕的
盗梦空间吗
printf(FORMAT,FORMAT);
连续两个FORMAT ,前一个作为格式化字符串,后一个作为值,那么其实就是把后一个字符串整个塞进前面字符串的%s部分去