关于return 0的问题

henufyh 2016-04-06 10:34:22
我所了解的是在主函数中(main函数)return 0;是正常的结束的意思,要是return一个非零的值就是非正常的结束的意思

但是我今天写了一个程序 感到了很迷茫了 就是在自己定义的返回值的类型为char类型的自定义函数 如果要是不在第50行return

一个返回值得时候 就会有一个 warning C4715: 'change' : not all control paths return a value 提示 我在50行加了return 0 之后就

没有了警告 我想要知道的是 明明是返回类型为char 但是返回了一个0 为什么不会报错 我刚开始的时候想到的是 因为

char 类型 和 int 类型 是一样嘛 所以0 也是对的嘛 但是我又有了一点的疑惑 就是在这个自己定义的函数里面的 return 0

会不会也像main函数那样是意味着正常结束呢 我好疑惑啊

# include <stdio.h>

char change(int i);

int main()
{
int score;
char rank;

printf("please the score:\n");
scanf("%d", &score);

if (score >=0 && score <=100)
{
rank = change(score);
putchar(rank);
}
else
printf("data error");

printf("\n");

return 0;
}

char change(int i)
{
int a;

a = i / 10;

switch(a)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
return 'D';
case 6:
case 7:
return 'C';
case 8:
return 'B';
case 9:
case 10:
return 'A';
}
/* return 0; */ //50行
}
...全文
480 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
min-min 2016-04-07
  • 打赏
  • 举报
回复
出现警告是因为这个函数必须有返回值,而你的代码不是所有条件分枝都有返回值。 char类型函数返回0页是正常的,char类型数据和int类型数据一样,也是一个数,只是char数据长度是1个字节,而int数据长度至少是2个字节。
小灸舞 版主 2016-04-07
  • 打赏
  • 举报
回复
int main()的return 0是和操作系统的约定,操作系统调用你的程序,你的程序从main运行,从main结束,main return 0表示告诉系统你的程序正常退出,return 1表示你的程序异常退出,1是异常的号码。操作系统可以利用这个return值来做事。 至于你自定义的函数的返回值你可以自己设定,通过返回值来进行一些不同的处理
chehw_1 2016-04-06
  • 打赏
  • 举报
回复
你自定义的返回值代表什么含义要由有你自己来决定。 用 "return 0; 表示成功" 仅仅是C的编程的一个古老的约定。 在C的传统中,当声明函数返回类型为int 时(比如 int foo(...); ), 如果该返回值不是某个计算的结果,那么往往是指err_code, 其中,0 表示 NO_ERROR。
旧剑鞘 2016-04-06
  • 打赏
  • 举报
回复
返回值为char,return 0;可以的,返回值为0x00的char变量 函数的返回值,是调用者使用的,意义完全在于函数设计者和调用者怎么约定。 main函数的返回值是系统在调用,约定的0为成功,这个没法改的。其他自定义函数可以按照需要约定
cocoabird 2016-04-06
  • 打赏
  • 举报
回复
引用 1 楼 yuelengdihai 的回复:
int main()决定了返回值为int (1或0)
看错了 50行那个return 0; 其实0和'\0'值是一样的 这里的0也就是字符‘\0' 是正常结束,函数返回值是'\0'
cocoabird 2016-04-06
  • 打赏
  • 举报
回复
int main()决定了返回值为int (1或0)
就是要流量 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊大家多给评论 点赞 关注啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

69,371

社区成员

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

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