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

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); }作为格式字符串。

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

关于c - C代码输出困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12252957/

10-09 01:30
查看更多