鱼C论坛

 找回密码
 立即注册
查看: 5534|回复: 4

我想问问这样的写法出错了? “”*“”有什么规则?

[复制链接]
发表于 2014-12-29 14:31:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void main()
{ 
int a,b;
int *pointer_1, *pointer_2,*p;
scanf("%d,%d",&a,&b);
pointer_1 = &a;
pointer_2 = &b;
*p=*pointer_1>*pointer_2?*pointer_1:*pointer_2;
printf("%d,%d\n",a,b);
printf("%d\n",*p);
}
上面的*p=*pointer_1>*pointer_2?*pointer_1:*pointer_2;
出错了吗?为什么出错呢?

语句不能使用吗?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-12-29 14:38:40 | 显示全部楼层
void main()
{ 
        int a,b;
        int *pointer_1, *pointer_2,*p;
        scanf("%d,%d",&a,&b);
        pointer_1 = &a;
        pointer_2 = &b;
        if(a>b) p=pointer_1;
        else p=pointer_2;

        printf("%d,%d\n",a,b);
        printf("%d\n",*p);
}
这是第一种解法

这是第二种解法
void main()
{ 
        int a,b;
        int *pointer_1, *pointer_2;
        scanf("%d,%d",&a,&b);
        pointer_1 = &a;
        pointer_2 = &b;
        printf("%d,%d\n",a,b);
        printf("%d\n",*pointer_1>*pointer_2?*pointer_1: *pointer_2);
}

最上面的为什么不行呢?语法错误吗?语法有什么规定吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2015-1-1 20:06:55 | 显示全部楼层
自己加上括号。。。不然没人记得这些运算符的优先级
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-3 22:31:18 | 显示全部楼层
鱼油们还是很活跃的嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-4 19:07:29 From FishC Mobile | 显示全部楼层
根据下面两个例子看出 你的代码改的不错哦,有想法。   没错 那句是错了 跟后面的运算没关系(应该是吧,三目运算记不清楚了)  既然你已经在使用*pointer_1来表示变量a 那么你也就知道它们之间的关系,我就不废话了 。    错在*p=...........;    这个指针变量你是把它当做普通变量来用了吧 你那些指针变量没有出问题是因为你都有给它赋一个变量,然后通过*的形式等价的当做普通变量使用 而你的p指针变量没有赋给任何普通变量,而你却使用*p的形式 当然编译器会报错,编译器认准了指针变量是只能用来存存储单元地址的,不可以用来存其它东西,甚至被当作普通储存单元用 你这样用是不合适的(明明它自己也是存储单元呀,为什么不能存其它东西呢= =,郁闷! 哦呵呵 这是一个不错的Hacker行为出发点呦 学了更多知识后,你可以突破这个由蠢蠢的编译器所限制的规则 加油!)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-25 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表