在For 迴圈初始化中宣告不同類型的變數
在C 中,無法直接在For 迴圈中宣告不同類型的變數for循環的初始化主體。這是因為循環初始化部分需要單一表達式,該表達式只能定義相同類型的變數。
考慮以下範例:
for (int i = 0, j = 0; ...) { // ... }
此程式碼正確定義了兩個整數變數 i和 j。但是,如果您嘗試在初始化中聲明整數和字符,則會導致編譯錯誤:
for (int i = 0, char c = 'a'; ...) { // ... }
技術解決方法
儘管不是在實際場景中建議,有一種技術解決方法可以在for 循環初始化中聲明不同的類型。它涉及創建一個包含所需類型的結構,然後使用該結構作為初始化表達式:
struct MyStruct { int a; char b; }; for (MyStruct s = { 0, 'a' }; s.a < 5; ++s.a) { std::cout << s.a << " " << s.b << std::endl; }
在此範例中,我們建立一個具有兩個成員的MyStruct,a(整數)和b (一個字元)。循環初始化將 MyStruct 實例 s 設為 a 等於 0,b 等於「a」。只要 s.a 小於 5,循環就會繼續。
以上是可以在 C For 迴圈初始化中宣告不同類型的變數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!