沒有躲過的坑--沒有及時break出for迴圈
break這個詞都不陌生,最常用到的就是在switch語句中。
如果在switch的case後面忘寫了break,就會順序執行到下一個case的對應的語句。
我說的這種情況只是對於C++,對於C Sharp如果忘記了break,編譯器是會報錯的。
仔細想想,好像自己還真沒有用過break在其他地方。導致自己又掉入了一個大坑中。
比如使用一個for迴圈查詢陣列中所要的元素中your_find對應的索引:
int index = 0;
for(int i=; i<1000; i++)
{
if(array[i] == your_find)
{
index = i;
}
}
這樣呢,上訴的程式碼會把整個for迴圈都執行完成。
為了,提高效率,如果我們可以確定array陣列中只有一個與your_find對應的索引,就可以這樣修改程式碼:
int index = 0;
for(int i=; i<1000; i++)
{
if(array[i] == your_find)
{
index = i;
break;
}
}
好了,當if中語句為真的時候,跳出for迴圈。
下面延伸一下,那麼對於二重迴圈,執行break的話,是跳出哪一個迴圈呢?
最簡單的方法,寫一段程式碼測試:
for(int j=0;j<=20;j++)
{
for(int i=0;i<=10;i++)
{
if(i==5) break;
}
if(j==20) cout<<" 'break' break from the nearest loop"<<endl;
}
cout<<j<<endl;
cout<<i<<endl;
上面程式碼的輸出為:
break’ break from the nearest loop”
21
5
因此可以確定,break是跳出離他最近的一層迴圈。
相關推薦
沒有躲過的坑--沒有及時break出for迴圈
break這個詞都不陌生,最常用到的就是在switch語句中。 如果在switch的case後面忘寫了break,就會順序執行到下一個case的對應的語句。 我說的這種情況只是對於C++,對於C Sharp如果忘記了break,編譯器是會報錯的。 仔細想想
沒有躲過的坑--使用using namespace std的壞習慣【轉】
(轉自:https://blog.csdn.net/wangshubo1989/article/details/50061311?utm_source=blogxgwz9) 使用名稱空間的目的是對識別符號的名稱進行本地化,以避免命名衝突。 在C++中,變數、函式和類都是大量存在的。如果沒有名
沒有躲過的坑--string中的c_str()陷阱
string.c_str是Borland封裝的String類中的一個函式,它返回當前字串的首字元地址。 c_str函式的返回值是const char*的,不能直接賦值給char*,所以就需要我們進行相應的操作轉化。 #include <iostream
沒有躲過的坑--類中的靜態成員變數(static or const static)
工作中是這樣的,A類中有一個成員變數x,最開始宣告為私有: class A{ private: int x; }; 現在需要在另一個cpp中使用這個x,所以要把它變為共有並且靜態: class A{ public: static int
沒有躲過的坑--智慧指標陷阱
之前部落格《淺析C++中的智慧指標》講訴了一些智慧指標的東西,可以幫助我們更加方便高效的使用指標,但是凡事都不會很完美。即使你使用智慧指標代替了傳統的指標,在實戰中你還是會遇到很多的坑兒。 現在,就分幾個方面: 首先為了簡化程式碼,進行了一些定義: cla
沒有躲過的坑--deprecated關鍵字
最近兩個被一個問題搞的暈暈乎乎,一直把焦點關注在 EXPRESSION SFINAE。 因為對我來說,EXPRESSION SFINAE也是完全新鮮的內容,有時間也發個關於這個特性的部落格。 經歷了一番周折,下載最新的VS2015,使用低版本的編譯器,都未能
沒有躲過的坑--wstring與string的轉換
wstring 是指的寬位元組。 typedef basic_string<char> string; typedef basic_string<wchar_t> wstring; 在實際工程中,我們往往需要把string轉換為w
沒有躲過的坑--重定義關鍵字
從學習程式語言開始,我們就知道變數或是函式的命名不能使用系統的關鍵字。 但是有時候,你不得不這麼做。 比如mac、ios、Android、windows共用一個底層程式碼,這樣為了使底層更加通用,有時候就會忽略某種語言的某個關鍵字。 也許關鍵字A對於win
沒有躲過的坑--map的初始化(插入資料)
最近工作中需要使用map,進行查詢。 首先簡單介紹一點map,也許是教科書裡講授最少的STL知識吧。但是在實際工作中map挺重要的,用於查詢很方便快捷,尤其是以鍵和值的形式存在的! 1、標頭檔案 #include<map> 2、map的功能
那些年沒有躲過的Appium的坑
1.npm安裝Appium失敗 2.輸入法遮擋控制元件導致NoSuchElementException 解決:DesiredCapabilities中設定resetKeyboard為tru
·沒有風雨躲得過,沒有坎坷不必走·
第一步:建立專案 開啟Eclipse,新建一個Java專案,名叫TestSWT,手動追加一些必要的目錄後結構如下: /bin - 這個是class編譯輸出路徑 /dll - 此目錄存放SWT解壓出來的那些dll檔案(簡單應用的話swt-win32-****.dll這一個檔案就夠了) /lib - 此目錄用來
一個略懂編程的人並且完全沒有接觸過IOS開發的人想要學習IOS開發應如何學習?
兩個 基礎 ray proc github上 上網 圈子 start 互聯網 (一)objective-c語言開發iOS應用 為什麽不讓初學者看斯坦福教程:我以為,斯坦福大學IOS公開課不適合入門的同學看,裏面第1.一課講解的就是MVC模式。對於一個剛入門想要學習的IOS的
nyoj 94-cigarettes (分清楚,那一部分的cigarettes是用過的,那一部分是沒有用過的)
emp code ping using num 內存 integer lin size 94-cigarettes 內存限制:64MB 時間限制:3000ms 特判: No
實驗11-10 查詢沒有借過任何書的讀者的讀者編號和讀者姓名
姓名 數據 1-1 edi span not in from reader brush 請在Exam數據庫中?查詢沒有借過任何書的讀者的讀者編號和讀者姓名 Select rno,rname from exam..reader where rno not in
請問有沒有裝過analyticstack的小夥伴們?求指點,求交流啦~謝謝謝謝謝謝謝~~~
我現在在win10系統用virtual box5.1,裝的ubuntu16.04server版,vagrant是2.0.1版本的,已經裝了十多天的open edx的analyticstack了,還是沒有成功,現在的問題是vagrant up的時候,報錯如下圖,希望懂的夥伴們支個招,謝謝啦 希望能
使用 ThinkPHP 框架,mysql 報錯:1364:Field xx doesn't have a default value,laravel 卻沒有報過
1364:Field 'sex' doesn't have a default value [ SQL語句 ] 1364:Field 'sex' doesn't have a default value [ SQL語句 ] 錯誤解決方法: 關閉MySQL的strict
android 全域性修改預設字型 沒有效果 填坑
最近有個需求要修改android app預設字型。網上有很多方法,但是最坑的是都沒有效果,但是最後還是解決了,不過不知道是什麼原因,如果知道的話歡迎留言(謝謝大家) 解決方案: 新增字型(.ttf)到工程目錄assets下, 我的是在assets在新建了一個fonts包。注意assets
idea打jar包沒有MANIFEST檔案坑
可能是 IntelliJ 的問題。 在 Project Structure - Artifacts 裡面選好 Main Class 之後,IntelliJ 會自動在下邊的 Directory for META-INF/MANIFEST.MF 裡填上 /$PROJECT_DIR/src/ma
沒有執行過rm -rf /*的開發不是好運維
沒有執行過rm -rf /*的開發不是好運維 起因 突然收到使用者反饋說網站在手機端開啟是白屏, 很奇怪的問題. 在電腦端試了下,確實也是白屏,HTML載入進來了,好像有個核心JS載入失敗. 看到一個錯誤是: We're sorry but house doesn't work properly wi
沒有讀過的書,就不要瞎推薦了!
馬克·吐溫曾經說過,經典小說是那種“眾人都想讀卻少有人真正花時間去讀”的書籍。“經典”的程式設計書也是如此。 在Stack Overflow(以及許多其他程式設計論壇)上,時不時有人討論“哪些書籍值得程式設計師一讀”。這個問題不斷被提出、被回答,形式不盡相同。有這麼一組書籍