c代码输出混乱

时间:2012-09-03 19:13:00

标签: c

有人可以给我解释下面的代码。输出如代码后所述。

char s[] = "char s[] = %c%s%c; main(){ printf(s,43,s,43); }";

void main(){
    printf(s,34,s,34);
}

OUTPUT -

char s[] = "char s[] = %c%s%c; main(){ printf(s,43,s,43); }"; main(){ printf(s,43,s,43); }

1 个答案:

答案 0 :(得分:2)

您使用字符串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); }。所以它打印出相同的字符串。

第三个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); }