c语言中怎样解释x=4,y=(++x)+(++x);结果y=12 c语言中x=3,y=(++x)+(++x);为什么输出的y值...

c\u8bed\u8a00\u95ee\u9898\uff1a\u8bbex=4\uff0cy=(++x)+(++x)\uff1b\u90a3\u4e48y\u7684\u503c\u7b49\u4e8e

\u9996\u5148++x\u8fd9\u79cd\u4e1c\u897f\uff0c\u5728\u540c\u4e00\u53e5\u4e2d\u6700\u591a\u4f7f\u7528\u4e00\u6b21\uff0c\u5426\u5219\u4f1a\u51fa\u95ee\u9898\uff08\u6d89\u53ca\u7f16\u8bd1\u539f\u7406\uff0c\u8bb2\u4e0d\u6e05\u695a\uff09
\u6b64\u5916\uff0cy=x++;\u76f8\u5f53\u4e8ey=x;x+=1;\u5373\u5148\u6267\u884c\u5b8c\u5f53\u524d\u7684\u4e00\u4e2a\u8bed\u53e5\uff08\u4ee5\u9017\u53f7\u3001\u5206\u53f7\u4e3a\u7ed3\u675f\u7b26\u7684\u8bed\u53e5\uff09
\u6700\u540e\uff0c\u81ea\u52a0\u3001\u81ea\u51cf\u8fd0\u7b97\u7b26\u5728\u540c\u4e00\u53e5\u5185\uff0c\u6c38\u8fdc\u4e0d\u8981\u4f7f\u7528\u4e24\u6b21\u53ca\u4ee5\u4e0a\u3002
\u4e0d\u8981\u5c1d\u8bd5\u7528y=(x++)+(++x)+(--x)+(x--)\u4e4b\u7c7b\u7684\u6076\u5fc3\u53e5\u5b50

x\u7684\u503c\u5b58\u50a8\u5728\u4e00\u4e2a\u4f4d\u7f6e\u4e0a\uff0c\u7b2c\u4e00\u6b21\uff08++x\uff09\u540ex\u7684\u503c\u4e3a4\uff0c\u7b2c\u4e8c\u6b21\uff08++x\uff09\u540e\u4e3a5. \u6700\u540ey=\uff08++x\uff09+\uff08++x\uff09\u76f8\u5f53\u4e8ey=x+x=5+5=10.

我把你的这个小程序运行了一下,结果确实是12,当我输出x的时候发现x的值是6 。
所以我是这样理解的,++x的作用是让数字x先自加一再在语句中被使用。
而y=(++x)+(++x); 这个语句中x被自加了两次,而只有一个语句,也就是说在运行到分号的时候 x的值是6,那么系统在执行y=(++x)+(++x); 这个时候 认为y = 6+ 6; 结构是等于12.

这与C语言的操作符的优先顺序和括号的结合律有关:
1.同一级运算按照从左到右的顺序依次进行
2.括号优先
3. ++x运算将x值加一然后返回x值

所以你这个表达式的运算顺序为:
1. x = 4
2. 运算左 (++x) 导致 x = 5 ,且 (++x) 变为 (x)
3. 运算右 (++x) 导致 x = 6,且 (++x) 变为 (x)
4. 此时运算 (x) + (x) ;而此时 x = 6; 因此 y = 12

c语言的逗号运算符是从左到右运算的,结果是最右边一个表达式的值。
y=
(
x=3*5, // x 为 15
x*4, // 这个值被丢弃
x+15 // 15+15,这作为整个表达式的值,被赋给y。
)

x自己先运算为6,最后带入y=x+x=12.

  • c璇█涓庢牱瑙i噴x=4,y=(++x)+(++x);缁撴灉y=12
    绛旓細鎵浠ユ垜鏄繖鏍风悊瑙g殑锛++x鐨浣滅敤鏄鏁板瓧x鍏堣嚜鍔犱竴鍐嶅湪璇彞涓浣跨敤銆傝y=(++x)+(++x); 杩欎釜璇彞涓瓁琚嚜鍔犱簡涓ゆ锛岃屽彧鏈変竴涓鍙ワ紝涔熷氨鏄鍦ㄨ繍琛屽埌鍒嗗彿鐨勬椂鍊 x鐨勫兼槸6锛岄偅涔堢郴缁熷湪鎵цy=(++x)+(++x); 杩欎釜鏃跺 璁や负y = 6+ 6锛 缁撴瀯鏄瓑浜12....
  • x=4,y=8'x'>='y' c璇█涓鏄湡杩樻槸鍋?
    绛旓細鍓嶈呮槸璧嬪肩粰鍙橀噺x鍜寉锛屽悗鑰呮槸姣旇緝鐨勫瓧绗涓巠锛屾牴鎹瓵SCII鐮侊紝y鐨勫兼槸澶т簬x鐨锛屾墍浠ワ紝鈥榅'>='Y'涓哄亣锛岀粨鏋滀负0銆傚鏋滄病鏈夊紩鍙凤紝閭d箞x=4锛寉=8锛屽緢鏄庢樉杩樻槸涓嶆垚绔嬶紝缁撴灉杩樻槸涓哄亣锛屼负0銆
  • c璇█闂:璁x=4,y=(++x)+(++x);閭d箞y鐨鍊肩瓑浜
    绛旓細棣栧厛++x杩欑涓滆タ锛屽湪鍚屼竴鍙ヤ腑鏈澶氫娇鐢ㄤ竴娆★紝鍚﹀垯浼氬嚭闂锛堟秹鍙婄紪璇戝師鐞嗭紝璁蹭笉娓呮锛夋澶锛寉=x++;鐩稿綋浜巠=x;x+=1;鍗冲厛鎵ц瀹屽綋鍓嶇殑涓涓鍙ワ紙浠ラ楀彿銆佸垎鍙蜂负缁撴潫绗︾殑璇彞锛夋渶鍚庯紝鑷姞銆佽嚜鍑忚繍绠楃鍦ㄥ悓涓鍙ュ唴锛屾案杩滀笉瑕佷娇鐢ㄤ袱娆″強浠ヤ笂銆備笉瑕佸皾璇曠敤y=(x++)+(++x)+(--x)+(x--)涔嬬被鐨勬伓蹇...
  • 鍦C璇█涓涓嬮潰绋嬪簭鐨勮В璇? int x=4,y=25,z=2; z=(--y/++x)*z--; pr...
    绛旓細杩欐槸鑷鑷噺杩愮畻绗︼紝濡傛灉鏄--y锛琛ㄧずy鐨鍊煎噺灏戜竴锛屽嵆24.鎵嶅弬鍔犺繍绠楋紝濡傛灉鏄痽--锛岃〃绀簓鐨勫煎厛杩愮畻浜嗗啀鍑忎竴銆傚悓鏍凤紝++灏辨槸鑷姞涓锛屼篃渚濅笂闈㈢殑鏂规硶绠楋紝涓嶇煡杩欐牱浣犳槑鐧戒笉銆
  • 杩欐槸涓涓叧浜C璇█鐨闂灏 鏄;X=Y=3;姹(Y=++X-1,X,Y)鍜(Y=X++-1,X...
    绛旓細(Y=++X-1, X, Y):鍏堟墽琛孹=X+1=4,鍗++X锛涘啀杩涜Y=X-1=3锛涙墍浠ョ瓟妗堝氨鏄細X=4,Y=3.(Y=X++ -1, X, Y):鍏堟墽琛孻=X-1=3-1=2锛涙帴鐫鍐嶆墽琛孹=X+1=3+1=4锛涙渶鍚庡氨鏄疿=4,Y=2.鍙傝冭祫鏂欙細鎴戜滑鐨C璇█鐨璇炬湰銆傚ソ濂界湅鐪嬩功锛屽氨鏄庣櫧浜嗭紒
  • C璇█璁$畻銆傝x=4,y=8.璇存槑涓嬪垪杩愮畻鍚,x,y,z鐨鍊煎垎鍒槸澶氬皯?
    绛旓細x==5,y==7,z==-3;x==5,y==7,z==35;x==5,y==7,z==12;x++琛ㄧず鍚庡棰勭畻锛屽嵆鍏堜娇鐢╔锛屼箣鍚庡湪鍋++杩愮畻锛屽亣璁X=4锛寉=x++;杩欐椂鍊欏氨鏄厛鎶妜鐨勫艰祴缁檡,鍦ㄥ仛++杩愮畻锛屾墽琛屽畬鍚庯紝缁撴灉涓簓==4,x==5;++x琛ㄧず鍚庡杩愮畻锛屽嵆鍏堝仛++杩愮畻锛屽湪浣跨敤x,杩樻槸鍋囪x=4,y=++x;杩欐椂鍊欏氨鏄痻...
  • c璇█涓瓂=(x=3*5,x*4,x+15)杈撳嚭缁撴灉涓轰粈涔坹绛変簬30
    绛旓細C璇█鐨閫楀彿杩愮畻绗︽槸浠庡乏鍒板彸杩愮畻鐨勶紝缁撴灉鏄渶鍙宠竟涓涓〃杈惧紡鐨勫笺y=(x=3*5, // x 涓 15x*4, // 杩欎釜鍊艰涓㈠純x+15 // 15+15锛岃繖浣滀负鏁翠釜琛ㄨ揪寮忕殑鍊硷紝琚祴缁檡銆)
  • ...璇█涓杩欎釜绠楁湳琛ㄨ揪寮忕殑鍊兼槸澶氬皯?涓轰粈涔?璁x=4,y=3
    绛旓細x>=y>=2鍦C璇█涓鐨勬剰涔変笌瀹冨湪鏁板涓殑鎰忎箟鏄笉鍚岀殑锛屽湪C璇█涓紝瀹冪瓑浠蜂簬锛(x>=y)>=2 鍗筹紝鍏堣绠梮>=y鏄惁鎴愮珛锛屽苟鐢ㄨ绠楃殑缁撴灉锛0鎴栬1锛変笌鍚庨潰鐨2杩涜澶у皬姣旇緝鐨勮繍绠楋紝鍥犳锛屽綋x=4,y=3鏃讹紝x>=y鎴愮珛锛屾墍浠(x>=y)鐨勫兼槸1锛堟垨鑰呮槸鍏跺畠鐨勯潪0鏁板瓧锛屽绯荤粺鏈変緷璧栨э級锛岀劧鍚庡啀璁$畻1...
  • c璇█涓瓁=4x*=y=z=4浠涔堟剰鎬?
    绛旓細璇█杩炵瓑璧嬪硷紝浠庡彸鍚戝乏鎵ц銆1锛寊=4; (缁撴灉锛歾=4)2锛寉=z; (缁撴灉锛歽=4)3锛寈*=y; (缁撴灉锛歺=16)4锛寈=4x; (缁撴灉锛歺=64)
  • c璇█鐨鈥<=鈥濆湪琛ㄨ揪寮涓浣杩愮畻?濡:int x=4,y;y=x--<=0;printf(%d...
    绛旓細娑夊強鍒版搷浣滅绛夌骇闂锛屽湪杩欓噷锛屽崟鐩搷浣滅浼樺厛绾ф渶楂橈紝灏辨槸(x--)锛屽叾娆℃槸<=0锛屾渶鍚庢槸=銆倄--缁撴灉鏄4锛4澶т簬0锛屾墍浠y=false锛岃绫诲瀷杞崲涓0.
  • 扩展阅读:求解方程计算器 ... point在c语言中怎么解释 ... c语言=和== ... 解方程 ... 万能计算器 ... c语言pow x y 是什么意思 ... c#入门基础知识 ... c#入门视频教程 ... c语言是一种解释型语言 ...

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