首页 文章

c代码输出混乱

提问于
浏览
0

有人可以给我解释下面的代码 . 输出如代码后面提到的那样 .

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 回答

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

相关问题