C测试,看看你的C语言过关了没。

aotianshenhua2 2011-10-16 04:26:10
不要复制运行,判断输出的是什么结果,并且说出为什么。看看你C语言学习到什么程度了。
不要看别人的回复,自己先好好想一下。
#include <stdio.h>

int func(int x , int y)
{
if (x<y){
return 1;
}else if (x==y){
return 0;
}else{
return -1;
}
}

int main(void)
{
int a=100;

int b=func(a,a++);
printf ("%d\n",b);

return 0
}
...全文
5404 点赞 收藏 252
写回复
252 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lhp_1 2011-12-30
少个分好、、、、、、vc++6.0显示结果 0
回复
微尘 2011-12-30
不过这种问题没什么意义呀。
回复
微尘 2011-12-30
-1、

函数参数入栈顺序的确是从右至左的。func左边参数为101,右边为100
回复
sharksir 2011-12-30
[Quote=引用 32 楼 akirya 的回复:]

典型的未定义行为,结果是啥都正确。
[/Quote]
++
回复
GIS_wudi 2011-12-30
都低调点,不管是几,咱心里清楚就行了
回复
kingkong_zhang 2011-12-30
写这用东西,不是自寻烦恼
回复
GAOHUACSDN 2011-12-29
答案是-1,第一次比较a==a,第二次a=a+a,所以前两条if豫剧都是不满足的,接下来返回-1
回复
nanjingnew4 2011-12-29
实际中这么写就是害自己么
回复
anoldfarmer 2011-12-28
这种题目就不应该出
回复
zttbill 2011-12-28
VC是0
回复
zttbill 2011-12-28
VC是0 如果是-1的话加括号得
回复
Programmerlq2011 2011-12-28
#include <stdio.h>

int func(int x , int y)
{
if (x<y){
return 1;
}else if (x==y){
return 0;
}else{
return -1;
}
}

int main(void)
{
int a=100;

int b=func(a,a++);
printf ("%d %d\n",b,a);

return 0;
}
又会是怎样
回复
yaoyueer 2011-12-28
答案为0.main函数中,将a和a++传递给func的x和y,所以x=y=100.return 0.b=0
回复
hengyu654 2011-12-28
sb问题
不多解释
回复
谭真齐 2011-12-28
根据编译器而定:
回复
天台的故事 2011-12-28
可能是-1,各个各个编译器都有不同是实现
回复
BiggerCode 2011-12-24
优先级问题输出应该0
回复
kow12358 2011-12-24
二级c试题,无意义,不解释
回复
mm11214014 2011-12-24
无趣,这没啥水平可言的
回复
blh 2011-12-24
如果你不属于下列行为,就不要浪费生命去研究这种有关++ --顺序的问题了,用不会产生歧义的方法编写程序才是正途

1.做C语言语法研究
2.做C编译器编译行为研究
3.致力于混乱编程
4.初学者好奇心态
5.心理变态
回复
发动态
发帖子
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
社区公告
暂无公告