在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