如果在for循環體內定義的是內置類型的變量,如int、float、double等,則與在循環體外定義基本沒差別,因為當前編譯器對此優化已足夠好,在循環體內和體外定義內置類型變量對應的反匯編代碼是一樣的(根據各路網上大神實驗結果);
如果在for循環體內定義的是自定義類型的變量,如自定義class對象,則與在循環體外定義是有差別的,因為需要不斷創建和銷毀臨時變量,調用class的構造函數和析構函數需要一定開銷。與內置類型不同,自定義class的constructor和deconstructor是編譯器無法預期的,所以在編譯器那塊無法優化,所以這部分開銷無法避免。