给微软跪了,求GCCER帮忙跑下如下代码
c++吧
全部回复
仅看楼主
level 10
#include <iostream>
using namespace std;
int max(int *p,int *q)
{
return *p>*q?*p:*q;
} int main()
{
int x=5;
int y=3;
//int *a=&x; //这两行是可以正确运行的,输出5
//int *b=&y;
const int *a=&x; //当使用这两行的时候,VS2008不报错,但是输出不正确
const int *b=&y; //输出为012ff60
cout<<max(a,b)<<endl;
return 0;
}
求问当一个函数形参为 int * 的时候,是否是不能直接用 const int * 的实参来充当参数,应该是直接报错的吧?
我的这段代码vs2008上不报错,且当把实参换成 int * const a=&x的时候,不报错,输出结果还正确,不知道gcc上运行这段代码的结果是什么,求帮助。[拜]
2012年11月19日 03点11分 1
level 13
c4droid
g++
0xbefa3ba4
2012年11月19日 03点11分 3
[拍砖]我恨标准库
2012年11月19日 03点11分
回复 挂羊头卖犬肉 :[礼物]叫你用using namespace std;,活该。
2012年11月19日 05点11分
level 11
[疑问]返回的是指针
2012年11月19日 03点11分 4
谢谢[揉脸],我忘记单步调试了
2012年11月19日 03点11分
level 12
std::cout <<typeid(max(a,b)).name() <<std::endl;
2012年11月19日 04点11分 5
[拍砖]
2012年11月19日 04点11分
level 11

gcc对const和非const之间转换敏感,编译报错,
不过这里
max被当成2楼提到的模板了而不是自己写的max函数上
2012年11月19日 04点11分 6
level 10
所以写这种常用、简短名称的函数名时我都会非常小心。。。
2012年11月19日 04点11分 7
回复 candy76041820 :难说,所以我会用类似rickcn_MAX()这样的。。。
2012年11月19日 05点11分
回复 candy76041820 :但在C的场景下就只能这样了
2012年11月19日 05点11分
回复 candy76041820 :就爱用
2012年11月19日 06点11分
level 3
同志你好,你有扣扣么,我也以请教你问题么,1197274036,可以加我么,我是可怜的小菜鸟
2012年11月19日 07点11分 8
1