#include <stdio.h>
int myfunc(char *str)
{
char *ptr =str;
while(*ptr++);
printf("%s %s\n",str,ptr);
return ptr-str-1;
}
int main()
{
printf("%d\n", myfunc("Princess Leia"));
return 0;
}
출력 :이상한 출력 설명
Princess Leia %d
13
어떻게 PTR 그것에 문자열로 %d
을 가지고 있습니까? 그리고 ptr-str-1
은 13
인 이유는 무엇입니까?
@Danial Fischer -이 코드를 4 개의 다른 플랫폼에서 실행하려고했습니다. 거룩한 모세. 그들은 모두 '% d'을 (를) 제공합니다. 이전에 나는 UB가 될 것이라고 생각했지만, 나를 놀라게 한 4 가지 다른 플랫폼에서! –
My gcc (4.7.2, on openSuSE 12.3 64-bit)도'Princess Leia % d'를 생성합니다. 하지만 내 clang (3.2)는'clang leia.c && ./a.out Princess Leia 13''ptr'에 대한 출력을 생성하지 않습니다. 항상 같은 것은 아닙니다. –
나는 gcc 4.3.2와 코드 블록을 시험해 보았다. 그것은 단지 우연일지도 모른다! 답변 해 주셔서 감사합니다. –