이 코드는 xlC 8.0 (AIX 5.3)에서 컴파일 될 때 잘못된 결과를 생성합니다. 12345
을 인쇄해야하지만 대신 804399880
을 인쇄하십시오. result
앞에있는 const
을 제거하면 코드가 올바르게 작동합니다.Consts 초기화 문제
버그는 어디에 있습니까?
#include <stdio.h>
#include <stdlib.h>
#include <string>
long int foo(std::string input)
{
return strtol(input.c_str(), NULL, 0);
}
void bar()
{
const long int result = foo("12345");
printf("%u\n", result);
}
int
main()
{
bar();
return 0;
}
컴파일 명령 :
이/usr/vacpp/bin/xlC example.cpp -g
편집 : 위의 printf와 형식 문자열을 변경 "% ld 개 \ 없음"도움이되지 않습니다. 편집 2 : 사용 된 AIX 버전은 6.1이 아닌 5.3입니다. printf와의 % u 개의 지정이 부호없는 정수를 나타냅니다,하지만 당신은 정수를 전달하는 미세한
아마도 컴파일러 문제가 ... VS2008 및 gcc (mingw)와 함께 작동합니다. – INS
AIX 5.3에서 XL C/C++ 8.0을 사용하여 저에게 적합합니다. 흥미 롭 군. –
@Fred 어떤 xlc 버전을 사용하고 있습니까? (xlC -qversion) 08.00.0000.0000을 사용하고 있습니다. –