【发布时间】:2011-02-08 09:04:21
【问题描述】:
此代码在 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
编辑:将上面的 printf 格式字符串更改为 "%ld\n" 没有帮助。 编辑 2:使用的 AIX 版本是 5.3,而不是 6.1。
【问题讨论】:
-
可能是编译器问题...它适用于 VS2008 和 gcc (mingw)
-
在 AIX 5.3 上使用 XL C/C++ 8.0 为我工作。很有趣。
-
@Fred 你用的是什么版本的 xlc? (xlC -qversion) 我使用的是 08.00.0000.0000。
-
IBM XL C/C++ Enterprise Edition V8.0 for AIX 版本:08.00.0000.0016