char c[99] = {'Stack Overflow'};
을 C 또는 C++로 작성한다고 가정 해 보겠습니다. 그것은 잘 컴파일하지만 이것은 유효합니까? 유효 함으로 어떤 종류의 정의되지 않은 또는 지정되지 않은 동작을 호출하지 않는다는 의미였습니다.유효한 C 문입니까?
다시 말해서 char c[99] = 'Stack Overflow';
gcc를 쓰면 gcc가 멀티 커터 상수에 대해 불평하지만 분명히 위의 경우 중괄호 안에 넣을 때 컴파일러가 행복합니다! 왜 그래야만하지?
첫 번째 문 다음에 puts(c);
은 Stack Overflow
인 일반 문자열의 마지막 문자 바로 'w'를 출력합니다. 왜 그렇게?
누군가 이러한 행동을 별도로 설명 할 수 있습니까?
컴파일하여 알아보십시오. – Falmarri
그는 이미 그것을 컴파일했다고 말했다. – indiv
@Falmarri : 나는 당신이 RTFQ 상을 획득했다고 생각한다. 그는 "그것이 잘 컴파일"하고 출력을 설명하고, 분명히 테스트를 수행했다. 그러나 테스트는 이식성이 있는지 또는 표준에 의해 잘 정의되어 있는지 여부를 알려주지 않습니다. –