欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7320|回復(fù): 48
收起左側(cè)

初學(xué)C51單片機(jī),遇到個(gè)奇怪的C語(yǔ)言問(wèn)題

  [復(fù)制鏈接]
ID:553885 發(fā)表于 2019-6-3 16:43 來(lái)自觸屏版 | 顯示全部樓層 |閱讀模式
int x=0,y=0;
y=x++;

按道理x=1,y=0
實(shí)際結(jié)果都是0

麻煩大家有空幫我看看,問(wèn)題在哪,先謝了
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2019-6-3 21:17 | 顯示全部樓層
++符號(hào),在變量名的右邊,是先取值、再自加1,即先把x值給y、x再自加1




~~~~~~~~~~~~~~~~~
回復(fù)

使用道具 舉報(bào)

ID:415123 發(fā)表于 2019-6-3 21:27 | 顯示全部樓層
不知你是怎么看到結(jié)果的,如果軟件仿真,斷點(diǎn)設(shè)置在y=x++;之后,應(yīng)該就是看到這個(gè)結(jié)果y=0,x=1,。
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2019-6-3 22:26 | 顯示全部樓層
這個(gè)不奇怪,你用x++ ,這個(gè)是先賦值給y 才加一
回復(fù)

使用道具 舉報(bào)

ID:554215 發(fā)表于 2019-6-3 22:59 | 顯示全部樓層
單純從語(yǔ)法角度,執(zhí)行完y=x++;這句后,y=0,x=1是肯定的。
回復(fù)

使用道具 舉報(bào)

ID:388197 發(fā)表于 2019-6-4 00:42 | 顯示全部樓層
運(yùn)算優(yōu)先級(jí)的問(wèn)題? ++跟賦值號(hào)的優(yōu)先級(jí)我也不記得了,這種東西在譚浩強(qiáng)的書(shū)里面最多,什么i++ ++i之類的....實(shí)際應(yīng)用最簡(jiǎn)單的辦法就是分開(kāi)2行或者加個(gè)括號(hào)什么的.根本沒(méi)必要去記那些運(yùn)算優(yōu)先級(jí)...
像這樣寫(xiě)
x++;
y=x;
就肯定不會(huì)有問(wèn)題了.
回復(fù)

使用道具 舉報(bào)

ID:511890 發(fā)表于 2019-6-4 02:13 | 顯示全部樓層
完整代碼沒(méi)有怎么看。。。根據(jù)你給的代碼,確實(shí)是y=0; x=1;。
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-6-4 06:14 | 顯示全部樓層
樓主要搞清楚x++與++x的區(qū)別,y=x++;表示x先對(duì)y賦值然后再自+1,y=++x;表示x先自+1然后再對(duì)y賦值。
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2019-6-4 08:19 | 顯示全部樓層
這個(gè)問(wèn)題取決于編譯平臺(tái)如何判定。
樓主可以按照自己的想法,做一個(gè)平臺(tái),就按你的意思編譯。也不能認(rèn)為你就是錯(cuò)的。
回復(fù)

使用道具 舉報(bào)

ID:158375 發(fā)表于 2019-6-4 08:31 | 顯示全部樓層
樓主應(yīng)該先看看C運(yùn)算的優(yōu)先級(jí),運(yùn)算優(yōu)先級(jí)搞不清楚,其他都是瞎扯。
回復(fù)

使用道具 舉報(bào)

ID:554341 發(fā)表于 2019-6-4 09:15 | 顯示全部樓層
這個(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

回復(fù)

使用道具 舉報(bào)

ID:554383 發(fā)表于 2019-6-4 09:38 | 顯示全部樓層
單純從規(guī)范的角度,不建議這種寫(xiě)法。
回復(fù)

使用道具 舉報(bào)

13#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:553885 發(fā)表于 2019-6-4 09:46 來(lái)自觸屏版 | 顯示全部樓層
首先感謝大家的回復(fù)。
下面是代碼和仿真頁(yè)面,方向綠色箭頭的代碼居然沒(méi)有編譯,所以結(jié)果就是0(紅色圈內(nèi))
IMG_20190604_094031.jpg
回復(fù)

使用道具 舉報(bào)

ID:553885 發(fā)表于 2019-6-4 09:52 來(lái)自觸屏版 | 顯示全部樓層
接下來(lái),我把代碼,j=i++;改為 i++; 也就是說(shuō),去掉j=,所有代碼就全部編譯了,而且結(jié)果也正確。

也不知道為什么,但同樣的代碼在c++中就沒(méi)有這個(gè)問(wèn)題。是不是和keil有關(guān)系,我用的是keil4
IMG_20190604_094749.jpg
回復(fù)

使用道具 舉報(bào)

ID:552592 發(fā)表于 2019-6-4 10:59 | 顯示全部樓層
++和--在后面,先賦值再++。在前面先++再賦值
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2019-6-4 11:25 | 顯示全部樓層
沒(méi)有什么為什么,就是編譯平臺(tái)的定義,換個(gè)平臺(tái)或許就可以。
所以,用KELL,就看KELL的的規(guī)定!
盡可采用“不會(huì)引起岐義方式寫(xiě)程序”
不過(guò)某些老師,為了顯擺自己,就是歡喜搞一些易歧義問(wèn)題來(lái)坑人。
回復(fù)

使用道具 舉報(bào)

ID:139042 發(fā)表于 2019-6-4 12:09 | 顯示全部樓層
這個(gè)是keil的代碼優(yōu)化的結(jié)果,x和y對(duì)整個(gè)程序無(wú)實(shí)際意義,kei給優(yōu)化掉了。你可以試著改改優(yōu)化等級(jí)。
回復(fù)

使用道具 舉報(bào)

ID:511890 發(fā)表于 2019-6-4 18:09 | 顯示全部樓層
z43218 發(fā)表于 2019-6-4 09:52
接下來(lái),我把代碼,j=i++;改為 i++; 也就是說(shuō),去掉j=,所有代碼就全部編譯了,而且結(jié)果也正確。

也不知 ...

經(jīng)過(guò)測(cè)試,這是Keil的坑。感覺(jué)所有的等式剛開(kāi)始都不會(huì)被執(zhí)行,只有++的變量被調(diào)用了,才會(huì)執(zhí)行。
如下修改成下面就好了。
        int i,j,k;
        i=0;
        j=0;
        j=i++;
        k=i;
        LED =0;
        while(1);
回復(fù)

使用道具 舉報(bào)

ID:493864 發(fā)表于 2019-6-4 19:32 | 顯示全部樓層
加號(hào)在右邊,那是先進(jìn)行賦值在加一,所以執(zhí)行語(yǔ)句后值不改變
回復(fù)

使用道具 舉報(bào)

ID:550032 發(fā)表于 2019-6-4 21:39 | 顯示全部樓層
“++”放在左邊才是1,放在右邊是先賦值再計(jì)算
回復(fù)

使用道具 舉報(bào)

ID:245771 發(fā)表于 2019-6-5 09:05 | 顯示全部樓層
建議詳細(xì)查看c基礎(chǔ),查閱運(yùn)算符結(jié)合規(guī)則,然后編程實(shí)踐
回復(fù)

使用道具 舉報(bào)

ID:461604 發(fā)表于 2019-6-5 09:56 | 顯示全部樓層
y = ++x,相當(dāng)于 x=x+1; y= x;
y = x++,相當(dāng)于 y = x; x=x+1;
回復(fù)

使用道具 舉報(bào)

ID:93224 發(fā)表于 2019-6-5 17:45 | 顯示全部樓層
是0就對(duì)了
回復(fù)

使用道具 舉報(bào)

ID:553885 發(fā)表于 2019-6-5 21:29 來(lái)自觸屏版 | 顯示全部樓層
非常感謝大家來(lái)解答問(wèn)題,
現(xiàn)在問(wèn)題已經(jīng)找到,如下面照片,是keil的C51編譯優(yōu)化設(shè)置,軟件默認(rèn)是8,改為7,問(wèn)題就解決了
IMG_20190605_211228.jpg
回復(fù)

使用道具 舉報(bào)

ID:556073 發(fā)表于 2019-6-5 22:39 | 顯示全部樓層
這個(gè)問(wèn)題有點(diǎn)難
printf輸出之后實(shí)際結(jié)果是x=1,y=0
回復(fù)

使用道具 舉報(bào)

ID:555552 發(fā)表于 2019-6-6 00:01 來(lái)自觸屏版 | 顯示全部樓層
+號(hào)在右邊
回復(fù)

使用道具 舉報(bào)

28#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:514901 發(fā)表于 2019-6-7 11:43 | 顯示全部樓層
int x=0,y=0;     y=x++;   printf(“x=%d,y=%d”,x,y);  就會(huì)看到x=1,y=0
回復(fù)

使用道具 舉報(bào)

ID:316256 發(fā)表于 2019-6-7 15:47 | 顯示全部樓層
運(yùn)算優(yōu)先級(jí)的問(wèn)題
回復(fù)

使用道具 舉報(bào)

31#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:557357 發(fā)表于 2019-6-7 21:10 | 顯示全部樓層
這題很簡(jiǎn)單  首先x,y初值都是零,執(zhí)行y=x++這個(gè)語(yǔ)句時(shí)  因?yàn)閤++是先把值給y  自身才加一  所以y=0,然后x++這個(gè)語(yǔ)句只是單純的  實(shí)際上x(chóng)沒(méi)有得到值所以還是為零  不知道這樣說(shuō)你能不能明白
回復(fù)

使用道具 舉報(bào)

ID:516571 發(fā)表于 2019-6-8 10:57 | 顯示全部樓層
把兩個(gè)+號(hào)放在x的左邊就是先算x+1的值賦給y
回復(fù)

使用道具 舉報(bào)

ID:561132 發(fā)表于 2019-6-12 18:34 | 顯示全部樓層
y=x++是先用x=0再在+1
回復(fù)

使用道具 舉報(bào)

ID:561132 發(fā)表于 2019-6-12 18:35 | 顯示全部樓層
y=x++是先用再+1    y=++x才是+1再用
回復(fù)

使用道具 舉報(bào)

ID:368940 發(fā)表于 2019-6-12 20:11 | 顯示全部樓層
是先x賦給y,然后x自加1
回復(fù)

使用道具 舉報(bào)

ID:549556 發(fā)表于 2019-6-12 20:43 | 顯示全部樓層
是對(duì)的哦 ,建議你看下程序有沒(méi)有錯(cuò)誤
回復(fù)

使用道具 舉報(bào)

ID:451448 發(fā)表于 2019-6-12 22:20 | 顯示全部樓層
優(yōu)先級(jí)不一樣,++的優(yōu)先級(jí)小于=的優(yōu)先級(jí)
回復(fù)

使用道具 舉報(bào)

39#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:448860 發(fā)表于 2019-6-12 22:30 | 顯示全部樓層
y應(yīng)該是y=y++吧
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表