为什么C语言程序里,else里的语句不能修改static变量的值 C语言中 在一个函数中用 static修饰的变量,还能给它赋...

C\u8bed\u8a00\u4e2dstatic\u53d8\u91cf\u7684\u8d4b\u503c\u95ee\u9898

static int a = 0; // \u8fd0\u884c\u671f\u65f6\u521d\u59cb\u5316\u4e00\u6b21, \u4e0b\u6b21\u518d\u8c03\u7528\u65f6, \u4e0d\u8fdb\u884c\u521d\u59cb\u5316\u5de5\u4f5c\u5982\u4e0b\uff1a
printf\uff08\u201c%d\u201d,a\uff09;
a++;
}
int main()
{
staticLocalVar(); // \u7b2c\u4e00\u6b21\u8c03\u7528, \u8f93\u51faa=0
staticLocalVar(); // \u7b2c\u4e8c\u6b21\u8c03\u7528, \u8bb0\u5fc6\u4e86\u7b2c\u4e00\u6b21\u9000\u51fa\u65f6\u7684\u503c, \u8f93\u51faa=1
return 0;
}

\u6269\u5c55\u8d44\u6599
1\u3001static\u5bf9\u5168\u5c40\u53d8\u91cf\u7684\u4fee\u9970\uff0c\u53ef\u4ee5\u8ba4\u4e3a\u662f\u9650\u5236\u4e86\u53ea\u80fd\u662f\u672c\u6587\u4ef6\u5f15\u7528\u6b64\u53d8\u91cf\u3002\u6709\u7684\u7a0b\u5e8f\u662f\u7531\u597d\u591a.c\u6587\u4ef6\u6784\u6210\u3002\u5f7c\u6b64\u53ef\u4ee5\u4e92\u76f8\u5f15\u7528\u53d8\u91cf\uff0c\u4f46\u52a0\u5165static\u4fee\u9970\u4e4b\u540e\uff0c\u53ea\u80fd\u88ab\u672c\u6587\u4ef6\u4e2d\u51fd\u6570\u5f15\u7528\u6b64\u53d8\u91cf\u3002
2\u3001static\u5bf9\u6808\u53d8\u91cf\u7684\u4fee\u9970\uff0c\u53ef\u4ee5\u8ba4\u4e3a\u6808\u53d8\u91cf\u7684\u751f\u547d\u5468\u671f\u5ef6\u957f\u5230\u7a0b\u5e8f\u6267\u884c\u7ed3\u675f\u65f6\u3002\u4e00\u822c\u6765\u8bf4\uff0c\u6808\u53d8\u91cf\u7684\u751f\u547d\u5468\u671f\u7531OS\u7ba1\u7406\uff0c\u5728\u9000\u6808\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6808\u53d8\u91cf\u7684\u751f\u547d\u4e5f\u5c31\u7ed3\u675f\u3002
3\u3001\u4f46\u52a0\u5165static\u4fee\u9970\u4e4b\u540e\uff0c\u53d8\u91cf\u5df2\u7ecf\u4e0d\u518d\u5b58\u50a8\u5728\u6808\u4e2d\uff0c\u800c\u662f\u548c\u5168\u5c40\u53d8\u91cf\u4e00\u8d77\u5b58\u50a8\u3002\u540c\u65f6\uff0c\u79bb\u5f00\u5b9a\u4e49\u5b83\u7684\u51fd\u6570\u540e\u4e0d\u80fd\u4f7f\u7528\uff0c\u4f46\u5982\u518d\u6b21\u8c03\u7528\u5b9a\u4e49\u5b83\u7684\u51fd\u6570\u65f6\uff0c\u5b83\u53c8\u53ef\u7ee7\u7eed\u4f7f\u7528\uff0c \u800c\u4e14\u4fdd\u5b58\u4e86\u524d\u6b21\u88ab\u8c03\u7528\u540e\u7559\u4e0b\u7684\u503c\u3002

\u53ef\u4ee5\uff0cstatic\u5728C\u8bed\u8a00\u4e2d\u662f\u8868\u793a\u4e00\u4e2a\u53d8\u91cf\u4e3a\u9759\u6001\u53d8\u91cf\u7684\uff0c\u800c\u4e0d\u662f\u5e38\u91cf\uff0c\u4e5f\u4e0d\u662f\u4e0d\u53ef\u53d8\u7684\u53d8\u91cf\u3002\u6240\u8c13\u7684\u9759\u6001\u53d8\u91cf\u6709\u4e24\u79cd\u60c5\u51b5\uff0c\u4e00\u79cd\u662f\u9759\u6001\u5168\u5c40\u53d8\u91cf\uff0c\u4e00\u79cd\u662f\u9759\u6001\u5c40\u90e8\u53d8\u91cf\u3002
\u50cf\u5728VB\uff0cC#\uff0cC\uff0cC++\uff0cJava\uff0cPHP\uff0cObjective-C\uff0cJavaScript\u4e2d\u6211\u4eec\u53ef\u4ee5\u770b\u5230static\u4f5c\u4e3a\u5173\u952e\u5b57\u548c\u51fd\u6570\u51fa\u73b0\uff0c\u5728\u5176\u4ed6\u7684\u9ad8\u7ea7\u8ba1\u7b97\u673a\u8bed\u8a00\u5982FORTRAN\u3001ALGOL\u3001COBOL\u3001BASIC\u3001LISP\u3001SNOBOL\u3001PL/1\u3001Pascal\u3001PROLOG\u3001Ada\u7b49\u8bed\u8a00\u4e2d\u4e5f\u662f\u6709\u51fa\u73b0\u7684\uff0c\u53ea\u662f\u6709\u7740\u4e0d\u540c\u7684\u4f5c\u7528\uff0c\u5bf9\u4e8e\u5176\u5177\u4f53\u4f5c\u7528\uff0c\u8bfb\u8005\u6709\u9700\u8981\u7684\u65f6\u5019\u662f\u53ef\u4ee5\u5177\u4f53\u67e5\u9605\u7684\u3002

\u6269\u5c55\u8d44\u6599\uff1a
\u9759\u6001\u5168\u5c40\u53d8\u91cf\u6709\u4ee5\u4e0b\u7279\u70b9\uff1a
\u8be5\u53d8\u91cf\u5728\u5168\u5c40\u6570\u636e\u533a\u5206\u914d\u5185\u5b58\uff1b\u672a\u7ecf\u521d\u59cb\u5316\u7684\u9759\u6001\u5168\u5c40\u53d8\u91cf\u4f1a\u88ab\u7a0b\u5e8f\u81ea\u52a8\u521d\u59cb\u5316\u4e3a0\uff08\u5728\u51fd\u6570\u4f53\u5185\u58f0\u660e\u7684\u81ea\u52a8\u53d8\u91cf\u7684\u503c\u662f\u968f\u673a\u7684\uff0c\u9664\u975e\u5b83\u88ab\u663e\u5f0f\u521d\u59cb\u5316\uff0c\u800c\u5728\u51fd\u6570\u4f53\u5916\u88ab\u58f0\u660e\u7684\u81ea\u52a8\u53d8\u91cf\u4e5f\u4f1a\u88ab\u521d\u59cb\u5316\u4e3a0\uff09\uff1b
\u9759\u6001\u5168\u5c40\u53d8\u91cf\u5728\u58f0\u660e\u5b83\u7684\u6574\u4e2a\u6587\u4ef6\u90fd\u662f\u53ef\u89c1\u7684\uff0c\u800c\u5728\u6587\u4ef6\u4e4b\u5916\u662f\u4e0d\u53ef\u89c1\u7684\uff1b\u9759\u6001\u53d8\u91cf\u90fd\u5728\u5168\u5c40\u6570\u636e\u533a\u5206\u914d\u5185\u5b58\uff0c\u5305\u62ec\u540e\u9762\u5c06\u8981\u63d0\u5230\u7684\u9759\u6001\u5c40\u90e8\u53d8\u91cf\u3002

可以。可是,那时候,那个函数也要是static的。
就是说,static变量是只能被static函数里面修改的。

把的代码贴出来看看。语法正确可以修改。

  • c璇█涓璭lse娌$粨鏉涓轰粈涔鎵цelse璇彞鍛?
    绛旓細1銆佸厛璇寸粨璁猴細璇存槑浣犵殑else鏄嫭绔嬬殑銆2銆佸嚭閿欏師鐞嗭細c璇█閲岋紝鏈塱f涓嶄竴瀹氭湁else锛屼絾鏄湁else涓瀹氳鏈夌浉瀵瑰簲鐨刬f銆3銆佽В鍐虫柟娉曪細杩欑鎯呭喌浣犲線鍓嶆帹涓涓嬶紝鎵鏈夌殑else鑳戒笉鑳借窡鐩稿簲鐨刬f瀵瑰簲锛屽緢瀹规槗灏辨壘鍒颁簡銆4銆佽壇濂戒範鎯細铏界劧c璇█涓嶈姹傞氳繃tab鎴栬卻pace鏉ュ尯鍒嗕笂涓嬬骇鍏崇郴锛屼絾鏄鍏绘垚鑹ソ涔﹀啓涔犳儻锛屾瘮濡傝...
  • c璇█涓璭lse鏄浠涔鎰忔
    绛旓細鍦–璇█涓紝else 鏄竴涓祦绋嬫帶鍒跺叧閿瓧锛岄氬父涓庡墠闈㈢殑鏉′欢璇彞缁撳悎浣跨敤锛岀敤浜庢弿杩颁竴绉嶇壒瀹氱殑绋嬪簭鎵ц璺緞銆傚綋涓嶆弧瓒冲墠闈㈡潯浠惰鍙ヤ腑鐨勬潯浠舵椂锛岀▼搴忎細鎵цelse鍚庨潰鐨勪唬鐮佸潡銆傝缁嗚В閲婏細1. 鍩烘湰鍚箟锛氬湪缂栫▼涓紝鎴戜滑缁忓父闇瑕佹牴鎹笉鍚岀殑鏉′欢鎵ц涓嶅悓鐨勬搷浣溿傝繖鏃讹紝鎴戜滑鍙互浣跨敤if璇彞鏉ユ鏌ユ煇涓潯浠舵槸鍚︿负鐪熴...
  • C璇█涓负浠涔浼氬嚭鐜else without a previous if?
    绛旓細C璇█涓鍑虹幇else without a previous if鏄洜涓篿f else娌$粨鏉燂紝瑕佷箞鍘绘帀鍒嗗彿锛岃涔堢粰浠栧姞涓妠 }銆侰璇█鏄竴闂ㄩ潰鍚戣繃绋嬬殑銆佹娊璞″寲鐨勯氱敤绋嬪簭璁捐璇█锛屽箍娉涘簲鐢ㄤ簬搴曞眰寮鍙戙侰璇█鑳戒互绠鏄撶殑鏂瑰紡缂栬瘧銆佸鐞嗕綆绾у瓨鍌ㄥ櫒銆侰璇█鏄粎浜х敓灏戦噺鐨勬満鍣ㄨ瑷浠ュ強涓嶉渶瑕佷换浣曡繍琛岀幆澧冩敮鎸佷究鑳借繍琛岀殑楂樻晥鐜囩▼搴忚璁¤瑷銆...
  • 涓轰粈涔圕璇█涓鐨else鎬绘槸鏃犳晥?
    绛旓細鍏舵锛鐢变簬娌℃湁鍔犳嫭鍙凤紝绗竴涓猧f鍙兘鎺у埗涓嬩竴琛岀殑璇彞锛屽嵆绗簩涓猧f锛涚涓涓猧f鏃犳晥锛屾墍浠ョ▼搴忓垽瀹氫笅涓琛岀殑绗簩涓猧f鏃犳晥锛岃屽啀寰涓嬩竴琛岀殑璇彞鍙堝彈绗簩涓猧f鎺у埗锛屾墍浠ュ畠鍙楀埌杩為攣鍙嶅簲锛岄棿鎺ヨ鏃犳晥浜嗐備笅闈㈢殑else涓庣浜屼釜if閰嶅锛岀浜屼釜if鏃犳晥灏辨槸else閰嶅瀵硅薄鏃犳晥锛宔lse鑷劧灏辫窡鐫鏃犳晥浜嗐傞偅涔坈=2灏辨病鏈...
  • 鍦c璇█绋嬪簭涓if-else璇彞鐨別lse璇彞鎬绘槸涓嶆墽琛屾槸鎬庝箞鍥炰簨
    绛旓細1銆佹柊寤轰竴涓伐绋嬪拰鏂囦欢锛屽懡鍚嶄负Third鍜宖irst.c 锛 鐒跺悗涔﹀啓濂绋嬪簭鐨勬ā鏉跨粨鏋勩2銆侀鍏堟垜浠紨绀轰竴涓緢涓嶈鑼冪殑浠g爜鍐欐硶锛屽緢澶氬垵瀛﹁呭鏄撳啓鎴愯繖鏍凤紝瀵艰嚧鍑虹幇鎰忔兂涓嶅埌鐨勮繍琛岀粨鏋溿3銆佸緢澶氬垵瀛﹁呭氨浼氫笉鐭ユ墍鎺紝鍏跺疄鍙鎶婁唬鐮佹寜鐓ф纭殑缂╄繘鏂瑰紡涔﹀啓锛屽氨鍙互寰堜竴鐩簡鐒朵簡銆4銆佽繖鏍蜂功鍐欒繃涔嬪悗锛屽氨寰堟竻妤氫簡...
  • C璇█绋嬪簭璁捐涓叧浜else鐨勭枒鎯?
    绛旓細纭疄鏄綘鐞嗚В閿欎簡銆绋嬪簭涓鐨勭21琛屾湯灏惧浜嗗垎鍙凤紝瀵艰嚧if璇彞灏辩粨鏉熶簡锛屾墍浠ュ悗闈㈢殑澶ф嫭鍙蜂腑鐨勮鍙ュ氨涓嶆槸灞炰簬else鐨勶紝鑰屾槸鏃犳潯浠舵墽琛岀殑璇彞銆
  • C璇█寰幆闂,涓轰粈涔杩愯else杩欎釜鐜妭鏃朵細鏃犻檺寰幆銆 else { printf...
    绛旓細浣犵殑绋嬪簭鏄繘鍒惰浆鎹紝鍏朵腑while锛1锛夊氨鏄釜姝诲惊鐜紝閭d箞杩欎釜鏄綘鎯宠鐨勫悧锛熶綘鎯浠涔鏃跺欓鍑鸿繖涓惊鐜紵浣犲彲浠ュ湪浣犳兂閫鍑簑hile锛1锛夊惊鐜殑鍦版柟鍔犱笂break锛屾垨鑰卹eturn 0;鎵浠ユ垜瑙夊緱浣犲嚭鐜版寰幆鐨勫師鍥犱笉鍦ㄤ簬eles,鑰屾槸鍦ㄤ簬while锛1锛夋棤娉曟甯搁鍑猴紝鎴栬呰浣犳病鏈夌粰鍑哄嚭鍙c傚彟澶栦綘鍙互鍦ㄤ綘鐨勫嚱鏁颁腑缁欏嚭鍑哄彛锛...
  • 璇烽棶澶т浆浠,c璇█杩欓噷else涓轰粈涔浼氭姤閿?
    绛旓細浠旂粏鐪嬩簡涓涓嬶紝浣犵殑閭d釜else鐨勫墠闈㈠ソ鍍忓皯浜嗕竴涓ぇ鎷彿鐨勫彸杈归儴鍒嗭紝浣犺嚜宸辩湅瑙侊紝濡傛灉鏄殑璇濓紝浣犳妸瀹冨姞涓婏紝鍐嶈繍琛岃瘯璇曘
  • C璇█ 涓轰粈涔杩欎釜绋嬪簭鍦ㄧ涔濊琛岄鍔犱笂else灏变笉瀵逛簡鍛
    绛旓細鍔犱笂else鍚庯紝return 1;鎴愪负浜唂or寰幆鐨勫惊鐜綋鐨勪竴閮ㄥ垎銆傛鏃讹紝鍙x涓嶈兘琚2-(x-1)涓殑涓涓暟鏁撮櫎锛屽氨杩斿洖1銆備絾姝g‘鐨勯昏緫搴旇鏄痻涓嶈兘琚2-(x-1)涓殑鎵鏈夋暟鏁撮櫎锛屾墠杩斿洖1銆傛墍浠ヤ笉鑳藉姞else銆
  • C璇█绋嬪簭瀹冭鎴戠殑else涓嶅悎娉,涓轰粈涔
    绛旓細if (t%2==0)t=t/2; //if璇彞鍙帶鍒跺埌浜嗚繖閲岋紝涓嬮潰鐨勬帶鍒朵笉鍒帮紝濡傛灉鎶奿=i+1;鍘绘帀灏辫// i=i+1; 鍘绘帀涔嬪悗,else 灏辩敤浣滅敤浜 else //t=t*3+1; i=i+1;
  • 扩展阅读:c语言if else程序框图 ... else的三种用法及位置 ... c语言if与多个else if ... c语言if else用法举例 ... c语言中else if的用法 ... if else嵌套例题 ... if else语句嵌套规则 ... if else语句的用法例子 ... c语言中两个if一个else ...

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