C语言的返回值问题,请作详细解释

#include <stdio.h>
main()
{ int fun(int n);
int i;
for(i=1;i<=200;i++)
if(fun(i)) printf("%5d",i);
}

int fun(int n)
{ int flag=1,i;
for(i=2;i<n/2 && flag==1;i++)
if(n%i==0) flag=0;
return(flag);
调用函数中,为什么是return(flag)而不是return 0;或return n;
返回值是怎么确定的?

怎么跟你解释呢。在底层一点的汇编语言里面,函数调用是通过栈实现的,函数块内的变量所需的空间都在栈上分配。C语言的return语句对应了汇编语言的一条函数调用返回的指令,CPU的寄存器单元里面有一个特殊的专门用来存取函数返回值的寄存器,这条返回指令执行的时候。并不是返回的flag,而是把flag里面的值先复制到了这个特殊的寄存器里面再返回的,而一旦返回,flag这个变量里面的内容就被“销毁”了。大概是这样的,等你学了计算机原理你就会清楚了。

你这个函数fun主要是要判断传进来的参数n是不是素数,返回值flag主要就是用1或者0来标示一下是还是不是。1表示是,0表示不是。素数定义是只能被1和它本身整除的数。fun先把flag置1,也就是先假设n是素数,然后让i从2开始一直到n/2,测试n % i == 0是否成立,一旦成立,就说明n能被一个不是它本身的数整除,那么n就不是素数,所以flag就应该被改为0。因为flag可以是1可以是0
,代表两种不同的判断,所以返回的时候就应该写return flag;flag是1就说明通过你上面的那些测试,判断出flag确实是素数,你的假设是正确的,for循环没有改过flag的假设值,就是说n % i == 0都不成立,即n不能被除其本身以外的数整除。而如果flag是0,那就说明至少有一个n % i == 0是成立的,就说明n不是素数了。这就相当于,你是监考员对学生提了一个是非问,让学生把答案是/否写在一张纸条上交给你,flag就相当于那张纸条。
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-01-11
flag是变量呀,可果n%i==0都不成立的话,那flag就不可能会是0萨,只会是1
第2个回答  2007-01-11

nt fun(int n)
{ int flag=1,i;
for(i=2;i<n/2 && flag==1;i++)
if(n%i==0) flag=0;
return(flag);
}
只要有一个条件if(n%i==0)满足,flag就是0,否则就是1
fun根据语义要求,返回为1或0,如果只是返回1或者n,那么还不如
int fun(n)
{
return 1; //or return n;
}
算了

C语言的返回值问题,请作详细解释
C语言的return语句对应了汇编语言的一条函数调用返回的指令,CPU的寄存器单元里面有一个特殊的专门用来存取函数返回值的寄存器,这条返回指令执行的时候。并不是返回的flag,而是把flag里面的值先复制到了这个特殊的寄存器里面再返回的,而一旦返回,flag这个变量里面的内容就被“销毁”了。大概是这样的,等...

c语言中的返回值是什么意思
1、C语言软件中返回值的意思如下:所有的函数,除了空值类型外,都会返回一个数值,空值是建议标准所做的扩展,该数值由返回语句确定。2、无返回语句时返回值是零;返回值是简单计算型,这种函数专门设计成对变元进行运算并返回计算值;返回值对信息进行处理,并返回一个值,以此表示处理的成功或失败;返...

C语言中函数的返回值是什么意思,是返回到哪里去
函数返回值在C语言中指的是函数执行完毕后向调用它的函数提供一个结果。这个返回值可以是任何数据类型,如整型、浮点型、字符型等。函数返回值的用途是将函数执行过程中的计算结果传递给主调用函数或其他函数。这使得主调用函数能够利用这个结果进行后续的处理或操作。函数返回值的获取通常通过return语句实现。

C语言中关于“返回值”的问题。知道
所有的判断语句的值,都只能是真或假,即true和false。在C里面,可以用1和0分别表示(注意:有些语言中只能用true和false)。y==2也是一个判断语句,如果y= 2,则y==2这个表达式的值就为1,否则就为0。一般来说,返回值是针对于一个函数来说的,对于某一天语句不说返回值。返回值可以是定义过的...

c语言中返回值是什么意思(C语言返回值是干什么用的)
答案:1.在C语言中,返回值是一个函数执行后传递给调用者的值。函数返回值的类型和值可以由函数的定义确定。2.在函数中使用关键字return来返回值,语法为:“return[expression];”。其中expression是返回值的表达式,它的类型必须与函数定义时指定的返回类型相同。3.如果函数的返回类型是void,则可以省略...

关系运算符的返回值问题
C语言中关系运算符有六种,分别为:等于、不等于、大于、小于、大于等于、小于等于。使用关系运算符时,返回值只能为1或0。若判断条件为真则返回1,否则返回0。比较两个数字时,按照数学法则比较大小并判断真假;比较两个字符时,则比较字符的ASCLL码的值;比较两字符串时,则首先比较首字符的大小关系...

求助大神关于C语言程序返回值的问题
函数返回值是存在内存栈中的,函数名是在代码段,返回值与参数是在数据段,当函数调用执行时就会将返回值压入栈中,int b=A();相当于调用函数,会将返回值弹出,传递给b.就是这样一个过程。并不是说将返回值返回操作系统,而是放到内存栈中。调用时,再弹出给对应的对象。

问一下c语言函数返回值的问题?
在被调用函数里,任何合理的表达式都可以作为返回值, 表达式的结果就是返回值。 就这个问题而言, c的内容就是返回值。 他有权返回什么跟调用它的函数里的一切都毫无关系。对调用它的函数而言, 相当于在调用的位置写一个常量,这个常量的值就是那个函数的返回值。

请问C语言中的返回值是什么意思,为什么要有返回值,解释一下,越通俗易...
就是你要一个函数或一段代码完成某一项功能,比如是一个计算任务,这个计算任务需要有一个结果,这个结果可以通过函数的返回值来得到。当然有的的函数不需要结果,就完成一个功能,比如播放一段音乐。但这个函数也会有一个返回值,这个返回值可能是播放是否成功,或是播放否结束等等。

c语言,关于函数返回值的问题。请问这里的return n==i怎么理解?
n==i是个逻辑运算,它的结果要么为0(假),要么为1(真)。所以这句话的意思就是:if (n == i){ return 1;} else { return 0;}

相似回答