C语言,需要有返回值类型的函数没有return为什么没有报错,反而返回了函数中的一个局部变量? 请问C语言中一个函数没有return它返回什么?

\u6211\u60f3\u77e5\u9053C\u8bed\u8a00\u8fd4\u56de\u7c7b\u578b\u51fd\u6570\uff0c\u5982\u679c\u6ca1\u6709\u8fd4\u56de\u503c\uff0c\u7a0b\u5e8f\u4e2d\u6ca1\u6709return\uff0c\u90a3\u4e48\u51fd\u6570\u6709\u9ed8\u8ba4\u8fd4\u56de\u503c\u5417\uff1f\u662f\u591a\u5c11?

\u5982\u679c\u51fd\u6570\u6709\u8fd4\u56de\u503c\uff0c\u51fd\u6570\u540d\u524d\u9762\u4e00\u5b9a\u76f8\u5173\u7684\u6570\u636e\u7c7b\u578b\uff0c\u4e0d\u8fd4\u56de\u4efb\u4f55\u6570\u636e\u65f6\uff0c\u5219\u9700\u5728\u51fd\u6570\u540d\u524d\u51a0\u4ee5void\u5173\u952e\u5b57\u3002\u5982\u679c\u4ec0\u4e48\u90fd\u6ca1\u6709(\u4e0d\u63a8\u8350)\uff0c\u5219\u7cfb\u7edf\u9ed8\u8ba4\u8fd4\u56deint\u7c7b\u578b\u3002
\u5728\u51fd\u6570\u4e2d\uff0c\u5bf9\u4e8e\u6709\u8fd4\u56de\u503c\u7684\u51fd\u6570\uff0c\u5173\u952e\u5b57\u540e\u9762\u5fc5\u6709\u4e0e\u51fd\u6570\u540d\u524d\u76f8\u540c\u7c7b\u578b\u7684\u6570\u636e(\u9ed8\u8ba4\u8f6c\u6362\u4e5f\u53ef\u4ee5)\uff0c\u5982\u679c\u4e0d\u52a0\u8fd4\u56de\u7684\u53d8\u91cf\u6216\u5e38\u91cf\uff0c\u4f1a\u7f16\u8bd1\u9519\u8bef\u3002

\u9996\u5148\u662f\u731c\u60f3\uff0c\u4e3b\u6d41\u5e73\u53f0\u4e0a\uff0c\u51fd\u6570\u8fd4\u56de\u90fd\u662f\u901a\u8fc7\u67d0\u4e2a\u901a\u7528\u5bc4\u5b58\u5668\u8fd4\u56de\uff0cx86\u5e73\u53f0\u662feax\uff0carm\u662fr0\uff0c\u6240\u4ee5\u731c\u60f3\u5373\u4f7f\u662fvoid\u8fd4\u56de\uff0c\u5982\u679c\u786c\u662f\u8981\u5f97\u5230\u8fd4\u56de\u503c\u7684\u8bdd\uff0c\u5e94\u8be5\u662f\u5f97\u5230\u8fd4\u56de\u90a3\u4e00\u523b\u8be5\u5bc4\u5b58\u5668\u7684\u503c\u3002
\u8bc1\u5b9e\uff1a\u4e3a\u4e86\u8bc1\u5b9e\uff0c\u9700\u8981\u5199\u4e00\u70b9\u4ee3\u7801\uff0c\u4e00\u4e2a\u6700\u7b80\u5355\u7684void test(){}\uff0c\u4e00\u4e2amain(){printf("%d", test())}\uff0c\u7136\u800c\u8fd9\u6837\u5e76\u4e0d\u884c\uff0c\u65e0\u6cd5\u901a\u8fc7\u7f16\u8bd1\uff0c\u9700\u8981\u4f7f\u7528\u624b\u6bb5\uff0c\u4ee3\u7801\u5982\u4e0b
void test(){ return;}typedef int(*F)(void);int main(){ F f = (F)test; printf("%d\n", f()); return 0;}\u5bf9\uff0c\u5c31\u662f\u628a\u51fd\u6570\u5f3a\u5236\u8f6c\u6362\u4e3a\u8fd4\u56deint\u518d\u8c03\u7528\uff0c\u7ed3\u679c\u5e76\u4e0d\u51fa\u4eba\u610f\u6599\uff0c\u662f-858993460\uff0c\u8fd9\u4e2a\u6570\u770b\u8d77\u6765\u6ca1\u4ec0\u4e48\u610f\u4e49\uff0c\u4e0d\u8fc7\u8f6c\u621016\u8fdb\u5236\u5c31\u6709\u610f\u4e49\u4e86\uff0c\u5b83\u662f0xcccccccc\uff0c\u5728VS\u7684debug\u8fc7\u7a0b\u4e2d\uff0ceax\u603b\u662f\u88ab\u521d\u59cb\u5316\u6210\u8fd9\u4e2a\u503c\uff0c\u5806\u6808\u5185\u6570\u7ec4\u4e5f\u662f\u5982\u6b64\uff0c\u540c\u65f6\u5b83\u4e5f\u662f\u8457\u540d\u7684"\u5c6f\u5c6f\u5c6f\u5c6f"\u7684\u6765\u6e90\u3002
\u518d\u628atest\u6539\u4e00\u4e0b\uff0c\u8fdb\u4e00\u6b65\u9a8c\u8bc1\uff0c\u8bd5\u56fe\u8ba9\u5b83\u8fd4\u56de0\uff0c\u529e\u6cd5\u662f\u628aeax\u53d8\u62100\uff1a
void test(){ int i = 1; i--; return;}\u731c\u60f3\u8fd9\u6b21\u4f1a\u8f93\u51fa0\uff0c\u56e0\u4e3ai\u4f1a\u653e\u8fdbeax\u91cc\uff0c\u518d\u8fdb\u884c\u81ea\u51cf\u8fd0\u7b97\uff0c\u7ed3\u679c\u4e5f\u5f97\u5230\u8bc1\u5b9e\u3002
\u673a\u5668\u73af\u5883\uff0cwin10 64bit\uff0cIDE\uff0cvisual studio 2015 \u793e\u533a\u7248\u3002
\u5e0c\u671b\u6709\u6240\u5e2e\u52a9\u3002

原程序中的错误太多。因为主程序中已经能够保证调用函数时的n是大于0的,所以,函数可以大大简化:
#include <stdio.h>
int main()
{ int jiecheng(int n);
int a=jiecheng(5);
if(a>0)printf("%d\n",a);
else printf("error");
return 0;
}
int jiecheng(int n)
{ int sum=1;
if(n>1)
{ sum=jiecheng(n-1)*n;
}
return sum;
}

  • C璇█鐨main鍑芥暟蹇呴』鏈夎繑鍥炲鍚?
    绛旓細鎸夋爣鍑嗘潵璇达紝C鐨刴ain鍑芥暟鏄渶瑕佹湁杩斿洖鍊肩殑銆傛爣鍑嗕腑main鍑芥暟杩斿洖绫诲瀷鏄痠nt鐨勶紝鎵浠ラ渶瑕佷竴涓繑鍥炲笺備絾鏄敱浜庡巻鍙插師鍥狅紝寰堝鍦版柟鍙互鐪嬪埌娌℃湁杩斿洖鍊肩殑main銆傛瘮濡傜洿鎺ain()鎴栬呰void main() 浣嗘槸杩欐牱涓鑸紪璇戝櫒涔熶笉浼氳涓洪敊璇紝涓嶈繃寤鸿杩樻槸鍐欐爣鍑嗙殑C鐨main鍑芥暟锛屾渶濂芥湁涓涓繑鍥炲硷紝0琛ㄧず姝e父閫鍑銆
  • c璇█涓,鏈夎繑鍥炲肩殑鐢╥nt,娌℃湁杩斿洖鍊肩殑鐢ㄤ粈涔?
    绛旓細鍦╟璇█涓紝鏈夎繑鍥炲肩殑灏辩敤int锛屾病鏈夎繑鍥炲煎氨鐢╲oid銆傚湪C璇█涓紝鍑′笉鍔犺繑鍥炲肩被鍨嬮檺瀹氱殑鍑芥暟锛屽氨浼氳缂栬瘧鍣ㄤ綔涓鸿繑鍥炴暣鍨嬪煎鐞嗐傚嵆涓嶅姞杩斿洖鍊艰鏄庣殑鍑芥暟涓鸿繑鍥炰负int鐨勫嚱鏁般傚鏋滃嚱鏁版病鏈夎繑鍥炲硷紝涓瀹氳澹版槑涓簐oid绫诲瀷銆傝繖鏃㈡槸绋嬪簭鑹ソ鍙鎬х殑闇瑕侊紝涔熸槸缂栫▼瑙勮寖鎬х殑瑕佹眰銆傚彟澶栵紝鍔犱笂void绫诲瀷澹版槑鍚庯紝...
  • 鍦C璇█涓,涓鍑芥暟鏄笉鏄蹇呴』瑕佹湁杩斿洖鍊?
    绛旓細鍦–璇█涓紝涓诲嚱鏁板繀椤昏鏈夎繑鍥炲笺俶ain 鍑芥暟鐨勮繑鍥炲肩被鍨嬪繀椤绘槸 int 锛岃繖鏍疯繑鍥炲兼墠鑳戒紶閫掔粰绋嬪簭鐨勬縺娲昏咃紙濡傛搷浣滅郴缁燂級銆傚鏋 main 鍑芥暟鐨勬渶鍚庢病鏈夊啓 return 璇彞鐨勮瘽锛孋99 瑙勫畾缂栬瘧鍣ㄨ鑷姩鍦ㄧ敓鎴愮殑鐩爣鏂囦欢涓紙濡 exe 鏂囦欢锛夊姞鍏eturn 0; 锛岃〃绀虹▼搴忔甯搁鍑恒傚湪C璇█鏍囧噯涓己鍒惰姹俶ain鍑芥暟鐨勮繑...
  • C璇█鍑芥暟鍙互杩斿洖鍊肩被鍨涓嶆槸int鍚?
    绛旓細鍦–璇█绋嬪簭涓紝濡傛灉鎴戞病娌℃湁瀵瑰嚱鏁扮殑绫诲瀷杩涜璇存槑鐨勮瘽锛閭d箞鍑芥暟鐨勯粯璁ょ被鍨嬫槸int绫诲瀷鐨勶紝涔熷氨鏄鍑芥暟蹇呴』杩斿洖涓涓猧nt鍨嬬殑杩斿洖鍊銆侰璇█鍑芥暟鏄竴绉嶅嚱鏁帮紝鐢ㄦ潵缂栬瘧C璇█锛屼竴鑸寘鎷瓧绗﹀簱鍑芥暟锛屾暟瀛﹀嚱鏁帮紝鐩綍鍑芥暟锛岃繘绋嬪嚱鏁帮紝璇婃柇鍑芥暟锛屾搷浣滃嚱鏁扮瓑銆傚嚱鏁版槸鐞嗚В闈㈠悜杩囩▼鍜岄潰鍚戝璞$殑鍒囧叆鐐广傞氳繃 C 璇█鐨...
  • C璇█涓畾涔夊嚱鏁版椂,鍑芥暟杩斿洖鍊肩被鍨鏄粈涔,鍏抽敭瀛楀彲浠ョ渷鐣?
    绛旓細鍦 C 璇█涓紝褰撳畾涔夊嚱鏁版椂锛屽嚱鏁拌繑鍥炲肩被鍨嬪彲浠ユ寚瀹氫负浠讳綍涓绉嶆暟鎹被鍨嬶紝渚嬪 int銆乫loat銆乨ouble銆乧har銆乿oid 绛銆傚叧閿瓧鍙互鐪佺暐鐨勬儏鍐垫槸鎸囧嚱鏁拌繑鍥炲肩被鍨嬩负 void 鏃讹紝鍙互鐪佺暐鍏抽敭瀛椼備互涓嬫槸涓涓畝鍗曠殑 C 璇█鍑芥暟绀轰緥锛歩nclude <stdio.h> int add(int a, int b) { return a + b;} int ...
  • c璇█涓鍑芥暟鐨勮繑鍥炲鍒板簳鏄粈涔堟剰鎬,鏈浠涔堢敤
    绛旓細1銆佹病鏈夎繑鍥炲肩殑鍑芥暟锛氬姛鑳藉彧鏄畬鎴愪竴涓搷浣滐紝搴斿皢杩斿洖鍊肩被鍨瀹氫箟涓簐oid锛屽嚱鏁颁綋鍐呭彲娌℃湁return璇彞銆2銆佹湁杩斿洖鍊肩殑鍑芥暟锛氬嚱鏁扮殑鏈鍚庝細鏈変竴涓繑鍥炲紃eturn锛屽彲浠ョ敤鏉ヨ幏鍙栬鍑芥暟鎵ц缁撴灉杩斿洖缁欒鍑芥暟锛岃澶栭儴璋冪敤璇ュ嚱鏁扮殑銆備竴涓嚱鏁扮殑鍑芥暟鍚嶆棦鏄鍑芥暟鐨勪唬琛紝涔熸槸涓涓彉閲忋傜敱浜庡嚱鏁板悕鍙橀噺閫氬父鐢ㄦ潵鎶婂嚱鏁...
  • C璇█鍑芥暟鍙互鏈夎繑鍥炲鍚?
    绛旓細c璇█瑙勫畾锛屽嚱鏁拌繑鍥炲肩殑绫诲瀷鏄敱鍑芥暟棣栭儴瀹氫箟鐨勭被鍨嬪喅瀹氥傚嚱鏁拌繑鍥炲煎簲涓庨閮ㄥ畾涔夌殑绫诲瀷涓鑷达紝濡傝嫢涓嶄竴鑷达紝鍒欒嚜鍔ㄥ皢杩斿洖鍊煎己鍒惰浆鎹负鍑芥暟棣栭儴瀹氫箟鐨勭被鍨嬨傛病鏈夊畾涔夌被鍨嬫椂榛樿涓篿nt鍨嬨備篃灏辨槸璇翠綘鐨勫嚱鏁鏄粈涔绫诲瀷锛岃繑鍥炲灏辨槸浠涔堢被鍨嬨傛瘮濡傦細鍑芥暟瀹氫箟 int fun(int a,char b)杩斿洖鍊煎氨鏄暣鍨 鍑芥暟瀹氫箟 ...
  • C璇█涓鍑芥暟杩斿洖绫诲瀷鍜鍑芥暟杩斿洖鍊
    绛旓細锛岃杩斿洖鍊肩殑绫诲瀷鏄寚璇ュ间綘鎯宠寰楀埌鐨绫诲瀷锛姣斿return a;锛坅鐨勭被鍨嬶紝浣犲湪鍑芥暟浣撻噷瀹氫箟鐨勬槸int a;浣嗘牴鎹闇瑕侊紝浣犺鐨勬槸涓涓猣loat鍨嬬殑杩斿洖鍊硷級锛屼簬鏄紝杩欐牱瀹氫箟涓涓嚱鏁帮細float 鍑芥暟鍚(鍙傛暟鍒楄〃){ int a; 鍑芥暟浣; 鈥︹ return a;}杩欐牱锛岃繑鍥炲a灏卞彉鎴愪簡float鍨嬨
  • C璇█涓鍑芥暟蹇呴』鏈夎繑鍥炲鍚?娌℃湁鏃犳硶浣跨敤瀵瑰悧?
    绛旓細涓嶆槸蹇呴』鏈夎繑鍥炲銆傚鏋滄病鏈夎繑鍥炲肩被鍨鍚嶄负"void"銆倂oid鍑芥暟鐨勫畾涔夛細void+鍑芥暟鍚嶏紙锛//鏃犵被鍨+鍑芥暟鍚 {// 绋嬪簭浠g爜} 濡傛灉娌℃湁杩斿洖鍊肩被鍨嬪悕涓"void", 鏁存暟绫诲瀷int 绫诲瀷杩斿洖鍊间负鏁存暟绫诲瀷int,浠ユ绫绘帹??绫诲瀷鍚嶆湁锛歷oid int long float int* long* float* ??
  • C璇█涓璦rea鍑芥暟鐨勫畾涔夊拰浣跨敤
    绛旓細c璇█閲屾病鏈夎繖涓鍑芥暟area锛屼絾鏄彲浠ヨ嚜瀹氫箟鍑芥暟銆傚嚱鏁板畾涔夛細浣跨敤锛杩斿洖鍊肩被鍨 鍑芥暟鍚(绫诲瀷 鍙橀噺鍚,绫诲瀷 鍙橀噺鍚,鈥){ 鍑芥暟浣;return (鏁版嵁)锛泒 渚嬪锛歩nt sum(int a, int b){ return a + b;}
  • 扩展阅读:c语言怎么返回多个值 ... c语言返回值怎么写 ... c语言return返回值类型 ... c语言如何返回上一步 ... c语言返回值返回到哪 ... 函数调用后必须带回返回值 ... c语言bool类型返回值 ... c语言position返回类型 ... 返回值类型有哪些c语言 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网