上海贝尔笔试题 为什么程序这样执行?

Clark-2010 2014-08-21 09:40:56
写出下列程序运行结果
int minus(int a, int b)
{
return a-b;
}
int c=4;
printf("%d", minus(++c, ++c)) ;
答案是 1
很不解 ,求大神解释
...全文
1200 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
Spencer_1987 2016-10-21
  • 打赏
  • 举报
回复
int minus(int a, int b) { cout<<a<<" "<<b<<endl; return a-b; } int main() { int c=4; int d=3; printf("%d", minus(++c, ++c)); printf("%d", minus(d++, d++)); system("pause"); } 在win7 vs2010中,输出结果为6 6 0,4 3 1
mse0520 2014-08-31
  • 打赏
  • 举报
回复
printf后面从右往左进行计算!
FeelTouch Labs 2014-08-31
  • 打赏
  • 举报
回复
win7 64位 vs2010 表示运行之后的结果是0
NeDong 2014-08-31
  • 打赏
  • 举报
回复
这种题,没啥意思
Evhung 2014-08-31
  • 打赏
  • 举报
回复
我就是面试过这样的问题,当时没找到地方,耽误了半小时,然后是各种刁难,
taodm 2014-08-29
  • 打赏
  • 举报
回复
难怪上海贝尔活不下去,要和人家合并。
vcf_reader 2014-08-29
  • 打赏
  • 举报
回复
不同的编译器有不同的实现
漂浮一生 2014-08-29
  • 打赏
  • 举报
回复
引用 4 楼 FightForProgrammer 的回复:
win7 vs2012 表示运行之后的结果是0
和我结果一样,这种东西和编译器有关的,再说,实际应用中写这样代码的自己都要疯掉
AAA3096 2014-08-29
  • 打赏
  • 举报
回复
引用贴里关于这个问题讲得好明确!
N0bug 2014-08-29
  • 打赏
  • 举报
回复
结果未定义。这种公司不用去了。
登陆首发 2014-08-28
  • 打赏
  • 举报
回复
好蛋疼的笔试题
  • 打赏
  • 举报
回复
引用 34 楼 FrankHB1989 的回复:
[quote=引用 16 楼 my3439955 的回复:] 这个题不是普通的考察++的顺序或结合性,他考察的关键点是函数调用的入栈顺序。就是问你觉得执行的流程是怎样的? 一般的,在vc环境中,cdecl是默认的调用约定,参数的入栈顺序是由右至左,参数的求值顺序也是由右至左,所以是后一个参数先++,前边的参数后++,前边的参数比后边的参数大 具体实现和编译器相关,只要答出入栈顺序就好了
这是连求值都没概念的典型瞎扯蛋。 C都没给你保证这里就应该有个栈,关入栈几毛钱关系? [/quote] 好臭的嘴
FrankHB1989 2014-08-26
  • 打赏
  • 举报
回复
引用 16 楼 my3439955 的回复:
这个题不是普通的考察++的顺序或结合性,他考察的关键点是函数调用的入栈顺序。就是问你觉得执行的流程是怎样的? 一般的,在vc环境中,cdecl是默认的调用约定,参数的入栈顺序是由右至左,参数的求值顺序也是由右至左,所以是后一个参数先++,前边的参数后++,前边的参数比后边的参数大 具体实现和编译器相关,只要答出入栈顺序就好了
这是连求值都没概念的典型瞎扯蛋。 C都没给你保证这里就应该有个栈,关入栈几毛钱关系?
FrankHB1989 2014-08-26
  • 打赏
  • 举报
回复
上海贝尔原来有这么SB么。
Clark-2010 2014-08-26
  • 打赏
  • 举报
回复
引用 19 楼 zhao4zhong1 的回复:
http://bbs.csdn.net/topics/370153775
谢谢赵老师!学习了
forzamilan_1978 2014-08-26
  • 打赏
  • 举报
回复
应该就是考察入栈顺序的问题,不过出的太不严谨了!
鼻涕虫de皮皮 2014-08-26
  • 打赏
  • 举报
回复
gcc编译后执行值是0
yulitingfeng 2014-08-25
  • 打赏
  • 举报
回复
引用 26 楼 u012421456 的回复:
[quote=引用 7 楼 lovesmiles 的回复:] 呵呵,又是i++,楼主看下置顶贴吧,这出题的人估计会被喷
这种问题,不想多说,置顶帖——http://bbs.csdn.net/topics/370153775[/quote]++
  • 打赏
  • 举报
回复
引用 1 楼 zxh707wk 的回复:
这样可以看懂了吧
int minus(int a, int b)
{
   return a-b;
}
int c=4;
int a=++c;
int b=++c;
printf("%d", minus(a, b)) ;
误人子弟啊
sunnysab 2014-08-24
  • 打赏
  • 举报
回复
调用方式,开始以为是0
加载更多回复(28)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧