欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

淺談防不勝防的unsigned int的運(yùn)算

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

我很早之前就知道,unsigned int與int運(yùn)算的時(shí)候,int會(huì)被轉(zhuǎn)化為unsigned int來進(jìn)行運(yùn)算。一直覺得定這條規(guī)則的人是極度反人類的,雖說unsigned int可以表示更大的正值,但畢竟我們不太會(huì)把unsinged想像成一個(gè)負(fù)數(shù),而一個(gè)負(fù)的int數(shù)可能在無意間就變成了最大的正數(shù)。

所以,我對(duì)這個(gè)問題很慎重。小心翼翼地,一直沒怎么出過錯(cuò)。直到有一天。

第一回合

那是一個(gè)陽光明媚的午后,我正愜意地刷leetcode。要遍歷vector中除最后一個(gè)元素的所有元素。我這樣寫道:

for(int i=0;i<nums.size()-1;++i)
  bulabula;

沒什么錯(cuò)吧?沒錯(cuò)!提交的時(shí)候發(fā)現(xiàn)程序出現(xiàn)了內(nèi)存訪問錯(cuò)誤。

作為一個(gè)自信的程序員,我自然想到了編譯器出了問題。于是在VS上測試,是沒有問題的!Stupid Leetcode!居然說我的代碼有問題,我的代碼怎么可能有問題?

就在我要放棄這一題的時(shí)候,我突然想到了邊界條件,于是把nums清空再測試,VS提示內(nèi)存訪問錯(cuò)誤。Soryy Leetcode,是在下輸了……

在進(jìn)行一番絞盡腦汁之后,我把目光聚焦在了size_t,查了資料后發(fā)現(xiàn),size_t就是個(gè)unsigned類型,恍然大悟……nums.size()-1就等于最大的正數(shù),i與之比較,肯定是符合條件的!OH NO!

第二回合

在經(jīng)歷了上述事情之后,我一般會(huì)這么寫程序:

for(int i=0;i<(int)nums.size()-1;++i)
  bulabula;

再也沒有出現(xiàn)過問題。每次看到別人還寫我之前那樣的代碼,我都會(huì)會(huì)意一笑,然后告訴他人的我心得。直到有一天,我看到一個(gè)大牛寫了這樣的代碼:

for(int i=nums.size()-1;i>=0;--i)
  bulabula;

我想我發(fā)現(xiàn)了大牛的錯(cuò)誤。有了上次的教訓(xùn),這次我測試了一下邊界條件。什么?居然正常運(yùn)行?

在想了很久之后,我得出以下結(jié)論:nums.size()-1的確得到了一個(gè)最大的unsigned int,可是把它賦給int的時(shí)候,編譯器就傻傻地直接把unsigned int賦給了int,于是int就為-1了。大牛畢竟是大?!?/p>

在學(xué)知識(shí)的道路上總會(huì)有羊腸小道,多走一些羊腸小道,我才能知道有沒有近道!加油加油!

以上就是小編為大家?guī)淼臏\談防不勝防的unsigned int的運(yùn)算全部內(nèi)容了,希望大家多多支持我們~

上一篇:基于C++中覆蓋,重載,隱藏的一點(diǎn)重要說明

欄    目:C語言

下一篇:淺談C++中派生類對(duì)象的內(nèi)存布局

本文標(biāo)題:淺談防不勝防的unsigned int的運(yùn)算

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1921.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有