在xlC 8.0(在AIX 5.3上)編譯時,此代碼會產生錯誤的結果。 它應該打印12345
,而是打印804399880
。 刪除result
前面的const
使代碼正常工作。初始化控制檯問題
錯誤在哪裏?
#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
編輯:更改上面的格式化字符串 「%LD \ N」 沒有幫助。 編輯2:使用的AIX版本是5.3,而不是6.1。
可能是一個編譯器問題...它適用於VS2008和gcc(mingw) – INS 2010-04-15 13:09:23
適用於我在AIX 5.3上使用XL C/C++ 8.0。有趣。 – 2010-04-15 13:27:19
@Fred你正在使用什麼版本的xlc? (xlC -qversion) 我使用的是08.00.0000.0000。 – 2010-04-17 13:42:24