繁体   English   中英

c代码输出混乱

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM