return之后,函数里的语句还要继续执行吗?

nj_wy 2015-02-22 12:49:24
int fun(int *p)
{
return (*p)++;
}
最终执行了++吗?
...全文
2771 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
xionggch 2015-03-05
  • 打赏
  • 举报
回复
return (*p)++; == int res = *p; (*p)++; return res;
赵4老师 2015-03-04
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实! 有人说一套做一套,你相信他说的还是相信他做的? 其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗? 不要写连自己也预测不了结果的代码!
nomasp 2015-03-04
  • 打赏
  • 举报
回复
执行了,这个语句就是return的一部分。但return语句之后(也就是分号以后)的语句则不再执行。
五星出东方 2015-03-04
  • 打赏
  • 举报
回复
无论软硬件,后门是肯定有的,斯若登都知道。 所以有自主论!
赵4老师 2015-03-04
  • 打赏
  • 举报
回复
引用 18 楼 u013585046 的回复:
CPU、编译器、调试器也不能迷信,眼睛有时也会欺骗人! 真相是如此扑朔迷离, 所以有远见卓识的人就更显珍贵!
不可知论!
五星出东方 2015-03-04
  • 打赏
  • 举报
回复
CPU、编译器、调试器也不能迷信,眼睛有时也会欺骗人! 真相是如此扑朔迷离, 所以有远见卓识的人就更显珍贵!
z253642075 2015-03-03
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
理解讨论之前请先学会如何观察! 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程! 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步Debug版对应汇编一行! 单步Debug版对应汇编千行不如单步Release版对应汇编一行! VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
cysccnu 2015-03-03
  • 打赏
  • 举报
回复
因为return (*p)++; 是一个语句,编译器会把这个语句翻译成多行汇编代码,所以这些汇编代码会整体执行。 相当于是把 *p 的值放到寄存器中返回(返回值通常放到寄存器中),然后把原来内存地址中对应的值自增1。如果你想利用这个自增的值,你只能用*p来取得,而不能从寄存器的返回值中取,因为返回值是原来的值。
li4c 2015-03-01
  • 打赏
  • 举报
回复
会的,具体自己写个程序试一下就知道了!!
mymtom 2015-03-01
  • 打赏
  • 举报
回复
会执行的! ++在return之前完成的
paschen 2015-02-25
  • 打赏
  • 举报
回复
补充一下: 楼主可以看一下这篇经典的文章:http://bbs.csdn.net/topics/370153775 里面提到了像++这种运算符产生的作用什么时候体现出来
偷不得懒 2015-02-25
  • 打赏
  • 举报
回复
这个问题不用纠结,直接一个跨号就解决了
勇敢小鱼 2015-02-25
  • 打赏
  • 举报
回复
函数返回的值是*p的值。 同时, 传入的参数值会加1. int param = 10; int res = fun(¶m); 结果是res = 10, param = 11; 可以尝试一下。
均陵鼠侠 2015-02-25
  • 打赏
  • 举报
回复
扑哧…… ++什么时候成了语句
FridayRU 2015-02-24
  • 打赏
  • 举报
回复
++会在分号之前完成,会执行的
九点上班 2015-02-24
  • 打赏
  • 举报
回复
当然会执行了
starnight_cyber 2015-02-23
  • 打赏
  • 举报
回复
会执行的,如楼上的回答。 语句:return (*p)++; (*p)++是一个表达式,其值为(*p),执行完++操作了,将(*p)的值返回。 一个小例程测试一下
#include <stdio.h>

int fun(int *p)
{
	return (*p)++;
}

int main()
{
	int x = 1;
	int y = fun(&x);
	printf("x = %d,y = %d\n", x, y);
	return 0;
}
百曉生 2015-02-23
  • 打赏
  • 举报
回复
会的,具体自己写个程序试一下就知道了!!
paschen 2015-02-22
  • 打赏
  • 举报
回复
执行的,因为会执行完return的整条语句,楼主可以写了测试一下,看*p的值有没变化就知了
buptbh 2015-02-22
  • 打赏
  • 举报
回复
会执行到分号
加载更多回复(2)

69,371

社区成员

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

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