0

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

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); }
4

1 回答 1

2

您正在使用该字符串char s[] = %c%s%c; main(){ printf(s,43,s,43); }作为格式化字符串。

第一个 arg 使用%c. 论据是34。所以它打印出值为 的 ASCII 字符34,即"(一个字符;双引号)。

第二个 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); }
于 2012-09-03T19:17:19.427 回答