最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

記錄一個(gè)C/C++數(shù)組賦值時(shí)索引問(wèn)題

2021-11-05 20:04 作者:云漢含星  | 我要投稿

C/C++數(shù)組賦值時(shí),索引不應(yīng)該寫自加運(yùn)算??

?????這個(gè)是我同學(xué)問(wèn)我的問(wèn)題,說(shuō)是來(lái)自他們學(xué)校的考研真題。但是看到題目的瞬間我就陷入了沉思,這個(gè)編譯真的不會(huì)有問(wèn)題嗎?來(lái)看一下代碼

????我看到a[i]=i+++1就察覺(jué)到了一絲不對(duì)勁;這里的a[i]到底是自加之后的i,還是之前的i?直覺(jué)告訴我自加運(yùn)算(++)的運(yùn)算優(yōu)先級(jí)是高于賦值(=)的,所以a[0]相應(yīng)該沒(méi)有值,而a[1] = 1

????然而她給我回了她運(yùn)行的截圖...

我看到整個(gè)人都不好了,a[0]還能有值呢,逗我玩呢?

于是我把這個(gè)代碼在VScode里面運(yùn)行了一下

人瞬間蒙了,我去,一看就是a[0]沒(méi)有賦值,然后a[1]等于了1,也就是說(shuō),這個(gè)過(guò)程是先算了i+1,然后再算了i++,最后再運(yùn)算了賦值運(yùn)算。到這里我以為已經(jīng)結(jié)束了。。。結(jié)果我腦抽去DevC++運(yùn)行了一下(因?yàn)樗玫腄evC++,版本為6.3)

淦,這第一項(xiàng)是0!但是同是DevC++(但是版本號(hào)不同)結(jié)果居然不一樣?。?!

于是我就好奇的在VS里面試了一下:

這是搞哪樣啊?++ 確實(shí)是在 i+1 之后計(jì)算的,但是賦值的a[i]真的能確定的這么早嗎,這和理想的運(yùn)算優(yōu)先級(jí)不一樣哇!這個(gè)答案是標(biāo)準(zhǔn)參考答案!

最后得出的結(jié)論就是,這什么破題,有爭(zhēng)議還拿來(lái)作為考題,下面是部分聊天的截圖

C/C++數(shù)組賦值時(shí),其實(shí)可以越界

????? ? 這個(gè)是之前使用ESP32的進(jìn)行數(shù)據(jù)的收發(fā)時(shí)發(fā)現(xiàn)的問(wèn)題,當(dāng)時(shí)定義數(shù)組的長(zhǎng)度十六,但是到了實(shí)際測(cè)試的時(shí)候一個(gè)字符串隨便按一按鍵盤就到了二十多,然而程序還是跑的很好。。。如下圖所示

????我們都知道數(shù)組越界會(huì)報(bào)錯(cuò),但是我們換個(gè)寫法,不用長(zhǎng)度來(lái)限制,而是使用結(jié)束標(biāo)志來(lái)限制長(zhǎng)度,這樣子就能有效的避開(kāi)編譯不通過(guò)。 而在運(yùn)行過(guò)程中,由于C/C++中的數(shù)組名其實(shí)就是一個(gè)指向數(shù)組頭部的指針??!所以我們這個(gè)根據(jù)這個(gè)指針地址來(lái)越界的讀寫寄存器是可行的!?。?/strong>

????????運(yùn)行的時(shí)候不要使用Debug運(yùn)行,選擇release,不然運(yùn)行后會(huì)返回錯(cuò)誤代碼。最終的結(jié)果當(dāng)然也沒(méi)有意外的正常! 五個(gè)長(zhǎng)度的字符數(shù)組,但是讀寫8個(gè)也沒(méi)啥問(wèn)題嘛哈哈哈。重點(diǎn)是沒(méi)有報(bào)錯(cuò)!沒(méi)有報(bào)錯(cuò)!看這個(gè)返回代碼返回的0!?。?/p>

????????但是這樣子是極為不推薦的,因?yàn)槟悴恢肋@個(gè)數(shù)組后方是什么,如果說(shuō)沒(méi)有被分配,那么程序是沒(méi)有問(wèn)題的,如果是其他的數(shù)據(jù),那么哦吼,完?duì)僮恿?,你其他的?shù)據(jù)被覆蓋了!?

????????程序還是不要搗鼓這些花里胡哨的好哈哈哈,浪費(fèi)時(shí)間還沒(méi)有學(xué)到東西


記錄一個(gè)C/C++數(shù)組賦值時(shí)索引問(wèn)題的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
稷山县| 扶绥县| 陆丰市| 建昌县| 黎平县| 师宗县| 山丹县| 陆川县| 汾阳市| 中牟县| 靖江市| 淳化县| 都江堰市| 四川省| 社旗县| 新建县| 谷城县| 舟山市| 醴陵市| 绍兴市| 婺源县| 平和县| 雷波县| 富阳市| 石门县| 定州市| 新巴尔虎左旗| 溆浦县| 阿拉善右旗| 东台市| 潞城市| 砀山县| 乐陵市| 五家渠市| 堆龙德庆县| 桃源县| 葵青区| 错那县| 定州市| 西盟| 揭东县|