[英]Confusion in output of c code
有人可以给我解释下面的代码。 输出如代码后面提到的那样。
char s[] = "char s[] = %c%s%c; main(){ printf(s,43,s,43); }";
void main(){
printf(s,34,s,34);
}
输出-
char s[] = "char s[] = %c%s%c; main(){ printf(s,43,s,43); }"; main(){ printf(s,43,s,43); }
你正在使用字符串char s[] = %c%s%c; main(){ printf(s,43,s,43); }
char s[] = %c%s%c; main(){ printf(s,43,s,43); }
char s[] = %c%s%c; main(){ printf(s,43,s,43); }
作为格式化字符串。
第一个arg使用%c
格式化。 争论是34
。 因此它打印出值为34
的ASCII字符,即"
(一个字符;双引号)”。
第二个arg使用%s
格式化。 参数是相同的格式字符串, char s[] = %c%s%c; main(){ printf(s,43,s,43); }
char s[] = %c%s%c; main(){ printf(s,43,s,43); }
char s[] = %c%s%c; main(){ printf(s,43,s,43); }
。 所以它打印出相同的字符串。
第三个arg是%c
,也是34
,所以它打印另一个引号。
这里的所有都是它的。 部分:
lit --> char s[] =
%c --> "
%s --> char s[] = %c%s%c; main(){ printf(s,43,s,43); }
%c --> "
lit --> ; main(){ printf(s,43,s,43); }
当放在一起时,它是:
char s[] = "char s[] = %c%s%c; main(){ printf(s,43,s,43); }"; main(){ printf(s,43,s,43); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.