黑马程序员技术交流社区

标题: 关于函数返回值的一个问题 [打印本页]

作者: SketchK    时间: 2015-4-22 22:59
标题: 关于函数返回值的一个问题
本帖最后由 SketchK 于 2015-4-25 12:22 编辑

如题,在观看iOS基础班的视频(03C语言的04章函数的07-返回值02-使用注意)中
发现如下代码
  1. include <stdio.h>

  2. int test3()
  3. {
  4.         printf("999999/n");
  5. }

  6. test2()
  7. {
  8.         printf("88888/n");
  9. }

  10. int main()
  11. {
  12.         int c = test2();
  13.         printf("c=%d/n",c);
  14.         
  15.         test3();
  16.         return=0;
  17. }
复制代码
我的问题是,看视频中,最后输出的结果会出现88888,这是为什么呢?

作者: 啦啦爱    时间: 2015-4-24 01:33
因为你main函数里,调用的是test2()函数
作者: 霸王睡别姬    时间: 2015-4-24 09:03
仔细看看你程序,test2()函数好像差一个分号,而且好像也没有return=0这种写法,而且你以整型输出C这又是什么呀!!得好好检查检查,看看表达的是什么
作者: ydy96315    时间: 2015-4-24 09:36
代码有问题,输出应该是 88888    0   999999 ;而且 test2 没有写函数类型 默认是int ,和test3一样没有写返回值,编译会警告,但不会抱错。
作者: SketchK    时间: 2015-4-24 15:05
霸王睡别姬 发表于 2015-4-24 09:03
仔细看看你程序,test2()函数好像差一个分号,而且好像也没有return=0这种写法,而且你以整型输出C这又是 ...

这是老师视频里面的一个代码例子,我只是没明白为什么会出现这种状况
作者: SketchK    时间: 2015-4-24 15:07
啦啦爱 发表于 2015-4-24 01:33
因为你main函数里,调用的是test2()函数

我是这么理解这件事
代码写的是int c = test2()
这只是一个赋值动作啊,为啥会出现88888,
难道在赋值的同时也做了调用?
作者: SketchK    时间: 2015-4-24 15:19
ydy96315 发表于 2015-4-24 09:36
代码有问题,输出应该是 88888    0   999999 ;而且 test2 没有写函数类型 默认是int ,和test3一样没有写 ...

我知道您的意思,这个也是老师视频里说到的
我是没理解在
int c = test2()的语句中,为什么会出现88888
这是一个赋值啊
作者: ydy96315    时间: 2015-4-25 07:28
SketchK 发表于 2015-4-24 15:19
我知道您的意思,这个也是老师视频里说到的
我是没理解在
int c = test2()的语句中,为什么会出现88888 ...

int c = test2() ;  你首先要调用test2吧  一调用 就 printf了啊  然后才有返回值给c赋值。
作者: SketchK    时间: 2015-4-25 12:22
ydy96315 发表于 2015-4-25 07:28
int c = test2() ;  你首先要调用test2吧  一调用 就 printf了啊  然后才有返回值给c赋值。  ...

哦,你这么一说,我还真是理解了,十分感谢十分感谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2