欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年12月21日 09:06:55   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談防不勝防的unsigned int的運(yùn)算。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

所以,我對這個(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)歷了上述事情之后,我一般會這么寫程序:

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

再也沒有出現(xiàn)過問題。每次看到別人還寫我之前那樣的代碼,我都會會意一笑,然后告訴他人的我心得。直到有一天,我看到一個(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了。大牛畢竟是大牛……

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

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

相關(guān)文章

  • C++實(shí)現(xiàn)inline hook的原理及應(yīng)用實(shí)例

    C++實(shí)現(xiàn)inline hook的原理及應(yīng)用實(shí)例

    這篇文章主要介紹了C++實(shí)現(xiàn)inline hook的原理及應(yīng)用,需要的朋友可以參考下
    2014-08-08
  • C語言程序設(shè)計(jì)第五版譚浩強(qiáng)課后答案(第二章答案)

    C語言程序設(shè)計(jì)第五版譚浩強(qiáng)課后答案(第二章答案)

    這篇文章主要介紹了C語言程序設(shè)計(jì)第五版譚浩強(qiáng)課后答案(第二章答案),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-04-04
  • C語言數(shù)據(jù)結(jié)構(gòu)系列隊(duì)列篇

    C語言數(shù)據(jù)結(jié)構(gòu)系列隊(duì)列篇

    本章我們將學(xué)習(xí) "隊(duì)列" ,首先介紹隊(duì)列的概念和結(jié)構(gòu),然后我們將著重講解棧的實(shí)現(xiàn)。我們從零開始寫隊(duì)列的接口,并從零開始步步解讀。本章將繼續(xù)鞏固畫思路草圖的能力,只要思路草圖畫好了,就可以很輕松地將其轉(zhuǎn)換成代碼
    2022-02-02
  • QT中QDockWidget控件的使用小結(jié)

    QT中QDockWidget控件的使用小結(jié)

    QDockWidget類提供了一個(gè)小部件,可以停靠在QMainWindow中,也可以作為桌面上的頂級窗口浮動,本文主要介紹了QT中QDockWidget控件的使用小結(jié),感興趣的可以了解一下
    2024-01-01
  • C++排序算法之插入排序解析

    C++排序算法之插入排序解析

    這篇文章主要介紹了C++排序算法之插入排序解析,將數(shù)組分為有序表和無序表,每次從有序表中取出一個(gè)元素,插入到有序表的適當(dāng)位置,每遍歷一次,有序表中元素增加一個(gè),無序表中元素個(gè)數(shù)減少一個(gè),重復(fù)n-1次,完成排序,需要的朋友可以參考下
    2023-10-10
  • C語言實(shí)現(xiàn)掃雷游戲詳細(xì)流程

    C語言實(shí)現(xiàn)掃雷游戲詳細(xì)流程

    windows自帶的游戲《掃雷》是陪伴了無數(shù)人的經(jīng)典游戲,本文將利用C語言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • C++ Array容器的顯示和隱式實(shí)例化詳細(xì)介紹

    C++ Array容器的顯示和隱式實(shí)例化詳細(xì)介紹

    這篇文章主要介紹了C++中Array容器的隱式實(shí)例化和顯式實(shí)例化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • C++線程安全的隊(duì)列你了解嘛

    C++線程安全的隊(duì)列你了解嘛

    這篇文章主要為大家詳細(xì)介紹了C++線程安全的隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++的類型轉(zhuǎn)換詳細(xì)介紹

    C++的類型轉(zhuǎn)換詳細(xì)介紹

    這篇文章主要介紹了C++的類型轉(zhuǎn)換詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • notepad介紹及插件cmake編譯過程(替代notepad++)

    notepad介紹及插件cmake編譯過程(替代notepad++)

    這篇文章主要介紹了notepad介紹及插件cmake編譯過程(替代notepad++),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03

最新評論