熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2019-6-3 16:43
正文摘要:int x=0,y=0; y=x++; 按道理x=1,y=0 實(shí)際結(jié)果都是0 麻煩大家有空幫我看看,問題在哪,先謝了 |
printf輸出之后實(shí)際結(jié)果是x=1,y=0 |
x++是實(shí)現(xiàn)x自增,但是返回x原來的值的, |
這個(gè)是先賦值再加,++i是先加再賦值的 |
是對(duì)的 你先看看那個(gè)++ -- 的運(yùn)算 |
++X, 表示先自加, 再進(jìn)行運(yùn)算, 而 X++表示先運(yùn)算, 后自加. |
完全是正確的,可能是你的編譯器有問題,或者你操作失誤,我用的Codeblocks |
27($(UN9YF2%@XW9XK$LJ$1.png (22.91 KB, 下載次數(shù): 132)
GA%T[5H_XB_3N_E}3Q%8W6R.png (250.23 KB, 下載次數(shù): 139)
不呀,完全沒有錯(cuò)?赡苁悄愕木幾g器有問題,我用Codeblocks運(yùn)行后,輸出X=1,Y=0 |
運(yùn)算優(yōu)先級(jí)的問題?,++跟賦值號(hào)的優(yōu)先級(jí)的優(yōu)先問題,實(shí)際應(yīng)用最簡(jiǎn)單的辦法就是分開2行或者加個(gè)括號(hào)什么的.根本沒必要去記那些運(yùn)算優(yōu)先級(jí)... 像這樣寫 x++; y=x; 就肯定不會(huì)有問題了. |
應(yīng)該是所用軟件的規(guī)則不一樣吧?赡芷脚_(tái)不支持這種語法 |
把++的語法好好復(fù)習(xí)一下吧 |
這是對(duì)的 |
x++,是x先取值0、就是y=0,然后x再自加1,x=1了; |
x++是先取x的值 再執(zhí)行x=x+1 你想要預(yù)期結(jié)果的話要寫y=++x |
y應(yīng)該是y=y++吧 |
優(yōu)先級(jí)不一樣,++的優(yōu)先級(jí)小于=的優(yōu)先級(jí) |
是對(duì)的哦 ,建議你看下程序有沒有錯(cuò)誤 |
是先x賦給y,然后x自加1 |
y=x++是先用再+1 y=++x才是+1再用 |
y=x++是先用x=0再在+1 |
把兩個(gè)+號(hào)放在x的左邊就是先算x+1的值賦給y |
這題很簡(jiǎn)單 首先x,y初值都是零,執(zhí)行y=x++這個(gè)語句時(shí) 因?yàn)閤++是先把值給y 自身才加一 所以y=0,然后x++這個(gè)語句只是單純的 實(shí)際上x沒有得到值所以還是為零 不知道這樣說你能不能明白 |
運(yùn)算優(yōu)先級(jí)的問題 |
int x=0,y=0; y=x++; printf(“x=%d,y=%d”,x,y); 就會(huì)看到x=1,y=0 |
+號(hào)在右邊 |
這個(gè)問題有點(diǎn)難 |
是0就對(duì)了 |
y = ++x,相當(dāng)于 x=x+1; y= x; y = x++,相當(dāng)于 y = x; x=x+1; |
建議詳細(xì)查看c基礎(chǔ),查閱運(yùn)算符結(jié)合規(guī)則,然后編程實(shí)踐 |
“++”放在左邊才是1,放在右邊是先賦值再計(jì)算 |
加號(hào)在右邊,那是先進(jìn)行賦值在加一,所以執(zhí)行語句后值不改變 |
z43218 發(fā)表于 2019-6-4 09:52 經(jīng)過測(cè)試,這是Keil的坑。感覺所有的等式剛開始都不會(huì)被執(zhí)行,只有++的變量被調(diào)用了,才會(huì)執(zhí)行。 如下修改成下面就好了。 int i,j,k; i=0; j=0; j=i++; k=i; LED =0; while(1); |
這個(gè)是keil的代碼優(yōu)化的結(jié)果,x和y對(duì)整個(gè)程序無實(shí)際意義,kei給優(yōu)化掉了。你可以試著改改優(yōu)化等級(jí)。 |
沒有什么為什么,就是編譯平臺(tái)的定義,換個(gè)平臺(tái)或許就可以。 所以,用KELL,就看KELL的的規(guī)定! 盡可采用“不會(huì)引起岐義方式寫程序” 不過某些老師,為了顯擺自己,就是歡喜搞一些易歧義問題來坑人。 |
++和--在后面,先賦值再++。在前面先++再賦值 |
單純從規(guī)范的角度,不建議這種寫法。 |
這個(gè)不奇怪,你用x++ ,這個(gè)是先賦值給y 才加一 x++與++x的區(qū)別,y=x++;表示x先對(duì)y賦值然后再自+1,y=++x;表示x先自+1然后再對(duì)y賦值。 ++符號(hào),在變量名的右邊,是先取值、再自加1,即先把x值給y、x再自加1 |
樓主應(yīng)該先看看C運(yùn)算的優(yōu)先級(jí),運(yùn)算優(yōu)先級(jí)搞不清楚,其他都是瞎扯。 |
Powered by 單片機(jī)教程網(wǎng)