免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 6348 | 回复: 33
打印 上一主题 下一主题

百思不得其解的问题.请大家帮忙(在线等^,问题已经解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-29 09:22 |只看该作者 |倒序浏览
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{
        long long a = 200;
        long long b = 100;
        long long c = llabs(a-b);
        printf("%d",c);
        return 0;
}
以上代码编译通过,运行也是正确的
可以一下代码编译就有问题了.很不理解,为什么不能调用c++的llabs函数,而出现重载的错误呢?

#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
        long long a = 200;
        long long b = 100;
        long long c = llabs(a-b);
        cout<<"c = "<<c<<endl;
        return 0;
}
请大家帮忙解决阿.

[ 本帖最后由 小蟹子 于 2007-6-29 10:57 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-06-29 09:25 |只看该作者
cout 和printf实现不同罢了,不过你的long long也够拉风。

论坛徽章:
0
3 [报告]
发表于 2007-06-29 09:27 |只看该作者
实现有什么不同?这个是.cpp文件。

论坛徽章:
0
4 [报告]
发表于 2007-06-29 09:30 |只看该作者
看来看去,你都没有说问题是什么

论坛徽章:
0
5 [报告]
发表于 2007-06-29 09:35 |只看该作者
下面的代码编译不过去。有重载的编译错误。很不理解。
为什么上面的没有重载的错误,而下面的有,调用c和c++的标准库,对这个有影响吗?
怎样才能调用c++的llabs函数。

论坛徽章:
0
6 [报告]
发表于 2007-06-29 09:39 |只看该作者
原帖由 小蟹子 于 6/29/2007 09:22 发表
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{
        long long a = 200;
        long long b = 100;
        long long c = llabs(a-b);
        printf(& ...


不知道楼主是用的什么编译器!不过可以肯定的是,如果两段代码都是用g++编译器是完全没有问题。如果都用gcc编译器,那第二段代码明显是属于C++,必然会有问题。

论坛徽章:
0
7 [报告]
发表于 2007-06-29 09:46 |只看该作者
我两个用的都是
g++ -o doTest test.cpp
只有第一个编译过去了,运行也正确
第二个有重载的错误。
我把第二个的      long long c = llabs(a-b);改成
                        long long c = __gnu_cxx::llabs(a-b);
就ok了,为什么第一个不用特别指定呢?

论坛徽章:
0
8 [报告]
发表于 2007-06-29 09:52 |只看该作者
原帖由 小蟹子 于 2007-6-29 09:46 发表
我两个用的都是
g++ -o doTest test.cpp
只有第一个编译过去了,运行也正确
第二个有重载的错误。
我把第二个的      long long c = llabs(a-b);改成
                        long long c = __gnu_cxx::lla ...


#include <stdlib.h>
换成
#include <cstdlib>
试试

论坛徽章:
0
9 [报告]
发表于 2007-06-29 09:55 |只看该作者
楼上已经说了,

  1. #include <cstdlib>
  2. #include <iostream>
  3. using namespace std;
  4. int main()
  5. {
  6.     long long a = 200ll;
  7.     long long b = 100ll;
  8.     long long c = llabs(a-b);
  9.     cout<<"c = "<<c<<endl;
  10.     return 0;
  11. }
复制代码


  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. int main()
  4. {
  5.     long long a = 200ll;
  6.     long long b = 100ll;
  7.     long long c = llabs(a-b);
  8.     printf("%lld",c);
  9.     return 0;
  10. }
复制代码

[ 本帖最后由 antonym55 于 2007-6-29 10:05 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-06-29 09:56 |只看该作者
楼上的意思是这样的吧。
#include <cstdlib>
#include <iostream>
using namespace std;

int main()
{
        long long a = 200;
        long long b = 100;
        long long c = llabs(a-b);
        cout<<"c = "<<c<<endl;
        return 0;
}
~
g++ -o doTest test.cpp

还是重载的错误,和以前的一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP