2012-01-09 11 views
12

के लिए लूप 2 को साथ संरचना, मैं जीसीसी से निम्न त्रुटि मिलती है:सी ++ के लिए लूप कई चर प्रारंभ

error: expected unqualified-id before 'int' 

मुझे यकीन है कि मैं क्या याद कर रहा हूँ नहीं हूँ। मैंने प्रलेखन को देखा है कि फॉर-लूप कैसे दिखना चाहिए और मैं अभी भी उलझन में हूं। यहाँ क्या गलत है? intcol से पहले बिना

#include <iostream> 
#include <vector> 

int main() { 
std::vector<int> values; 

for (int i = 0; i < 20; i++) { 
    values.push_back(i); 
} 

std::cout << "Reading values from 'std::vector values'" << std::endl; 
for (int i = 0, int col = 0; i < values.size(); i++, col++) { 
    if (col > 10) { std::cout << std::endl; col == 0; } 
    std::endl << values[i] << ' '; 
    } 
} 

उत्तर

15

प्रयास करें।

for (int i = 0, col = 0; i < values.size(); i++, col++)

+0

धन्यवाद - मैंने यह बिल्कुल नहीं देखा। – jdphenix

+0

क्या हम 'for' लूप में स्थिति के लिए प्लेसहोल्डर में चर 'i' और' j' से संबंधित दो स्थितियों के बीच तार्किक संचालन कर सकते हैं? – Chaitanya

+0

@ चैतन्य हां। – jweyrich

3

यह

for (int i = 0, col = 0; i < values.size(); i++, col++) { 
    if (col > 10) { std::cout << std::endl; col == 0; } 
    std::endl << values[i] << ' '; 
    } 
} 

एक चर परिभाषा इस

डेटाप्रकार variable_name की तरह हो जाता है ठीक करना चाहिए [= init_value] [, variable_name [= init_value]] *;

+1

अंतिम वाक्य वास्तव में सच नहीं है। उदाहरण के लिए, निम्नलिखित मान्य है: 'int w, * x, (* y) (int, int), z;' –

+0

मैं सहमत हूं! मुझे परिवर्तनीय घोषणा की सी ++ मानकों की परिभाषा नहीं मिली। इसलिए एक विविध घोषणा का एक सार प्रस्तुत किया है। यहां परिवर्तनीय नाम सख्ती से पुष्टि नहीं करता है [ए-जेए-जेड] [ए-जेए-जेड -9] 9 *। इसका मतलब भी हो सकता है * एक्स, उदा। int w = 10, * x = NULL; स्पष्टीकरण देने के लिए धन्यवाद ! :) –

7

अन्य लोगों ने आपको पहले ही बताया है कि आपने जो समस्या देखी है उसे ठीक कैसे किया जाए। col==0; वास्तव में col=0; बनना है:

if (col > 10) { std::cout << std::endl; col == 0; } 

यह लगभग निश्चित है कि यहां पिछले बयान लगता है: एक नहीं बल्कि अलग ध्यान दें, यह में पर।

+0

यह सच होगा - यह एक साधारण परीक्षण मामला था जिसे मैंने प्रश्न के लिए एक साथ रखा था। अच्छी पकड़ – jdphenix

2

, अल्पविराम उपयोग के बाद पूर्णांक की घोषणा न करें

for (int i = 0,col = 0; i < values.size(); i++, col++) { 
    if (col > 10) { std::cout << std::endl; col == 0; } 
    std::endl << values[i] << ' '; 
    } 
} 
0

यह एक नियमित रूप से कई चर घोषणा/एक पंक्ति में एक अल्पविराम ऑपरेटर का उपयोग प्रारंभ करने के लिए समान है। आप यह कर सकते हैं:

int a = 1, b = 2; 

2 इंच घोषित करता है। लेकिन यह नहीं:

int a = 1, int b = 2; //ERROR 
संबंधित मुद्दे