gud0102   3년 전

입출력 문젠가 싶어서 cin/cout으로 통일, 혹은 printf/scanf로 통일, 혹은 printf와 cin 또는 cin과 printf 등등,,, 입력받는 배열 maze도 int형으로도 받아보고 char형으로도 받아봤는데 

전부 결과가 각각 같은 답을 뱉는데도 불구하고 어떤건 바로 틀렸습니다, 81%에서 틀렸습니다, 55%에서 틀렸습니다 

이렇게 나와요,,... ㅜㅜㅜ 이게 대체 뭐죠?...

gud0102   3년 전

배열 초기화 방법을 기존에 [M][N]으로 했는데,

전역 변수 선언으로 #define MAX 101로 하고 배열 초기화를 [MAX][MAX]로 하니까 해결됐습니다.


이전에 알던 지식이라면 저런 매크로 처리보다 변수 초기화 방법이 컴파일 과정에서 불안전한 것으로 알고 있었는데... 그게 터진건가 싶네요..

근데 그 문제였으면 진작에 터지지 오ㅐ ,.. 80%에서...? ㅠㅠㅠㅠㅠ


방금 VS에서 100x100 배열 1로 꽉채운거 넣어보니까 199 답은 잘나오네요 이전 코드도...

doju   3년 전

GCC 컴파일러에 15번째 줄과 같이 VLA(variable-length array, 고정된 값이 아닌 변수를 크기로 하는 배열)를 선언과 동시에 초기화하는 문법이 제대로 동작하지 않는 버그가 있습니다.

다만 알아야 할 점은, C++은 VLA를 선언하는 문법을 표준으로 지원하지 않는다는 점입니다. 그럼에도 불구하고 컴파일 에러가 나지 않는 이유는 GCC 컴파일러가 이 문법을 확장 기능으로 제공하고 있기 때문입니다. 표준이 아니므로 다른 환경에서는 이 코드가 아예 동작하지 않을 수도 있으며, 입력에 따라 배열의 크기가 결정되도록 하고 싶다면 std::vector를 사용하는 것이 가장 권장됩니다.

댓글을 작성하려면 로그인해야 합니다.