2011-10-31 13 views
6

मैं ग नया हूँ ++ और मैं मूल्य 50 से शुरू होने वाले कारों को बढ़ाने के लिए, लेकिन केवल एक की वृद्धि करता है, तो youdamage cardamage से greaters है कोशिश कर रहा हूँ। मैं चाहता हूं कि अगली बार लूप के माध्यम से कारें अपना मूल्य धारण करें। मुझे लगता है कि इसका मतलब बनता है।द्वारा संदर्भित चर बढ़ाने के लिए कैसे 1

int Power (int &car); 

int main(){ 
    int car = 50; 
    // ... 
    // ... 
    // ... 

    int carDamage = 0; 
    int yourDamage = 0; 
    // pick a random number between 1 to 50 
    yourDamage = 0 + rand() % (50 - 0 + 1); 
    carDamage = 0 + rand() % (50 - 0 + 1); 
    cout << "You hit the car and cause damage of: " << carDamage << endl; 
    cout << "The car hits you and causes damage of: " << yourDamage << endl; 
    cout << endl; 

    if(carDamage < yourDamage) 
    { 
     cout << "You win" << endl; 
     cout << "You gain strength." << endl; 
     cout << endl; 
     int car = car + 1; 
    } 
    else 
    { 

उत्तर

8

आप एक नया चर मूल एक छाया की घोषणा कर रहे हैं।

परिवर्तन

int car = car + 1; 

को
car = car + 1; 
7

आप ही चर करने के लिए पुन: असाइन करने की जरूरत है। आप एक नया चर घोषित कर रहे हैं।

बदलें इस:

int car = car + 1; 
इस के लिए

:

++car; 
0

आप एक नया चर car अगर बयान जो खाल ऊपर दिए गए क्षेत्र से मूल car वेरिएबल के अंदर घोषित कर रहे हैं। इस प्रकार को हटाने से आप एक नया घोषित करने के बजाय मौजूदा चर का संदर्भ दे सकते हैं।

संक्षेप में, बदल

int car = car + 1; 

car = car + 1; 
0

करने के लिए अपने समस्या यह है कि जब आप कहते हैं

int car = car + 1; 

आप मूल रूप से एक स्थानीय चर कहा कार बना रहे हैं (करने के लिए स्थानीय है यदि कथन) जिसे 51 का मान सौंपा गया है (मूल स्थानीय स्कोप चर (स्थानीय से मुख्य) में 5 शामिल हैं 0 और आप 1 जोड़ते हैं)। यह स्थानीय चर (यदि बयान में पर) एक बार आप अगर बयान से बाहर निकलने के नष्ट हो जाता है।

आप

car = car + 1; 

के लिए इसे बदल अब आप मुख्य चर स्थानीय संशोधित कर रहे हैं, और इस तरह अद्यतन रखा जाएगा तो।

0

मैं एक पाश नहीं दिख रहा है, लेकिन मैं एक अनुमान खतरे के लिए अपनी समस्या यह है कि आप इस लाइन कर रहे है कि जा रहा हूँ:

int car = car + 1; 
अपने में

:

if(carDamage < yourDamage) 

कथन जिसका अर्थ है कि आप हर बार फिर से चल रहे हैं, इसके मूल्य को रीसेट कर रहे हैं।

लिखने int car; बयान Outsize और बस पाश अंदर ++car; कर जहां मूल रूप से लिखा int car = car + 1;

1

ऐसा करने से:

int car = car + 1; 

आप एक पूर्णांक के रूप में फिर से परिभाषित कर रहे हैं कार।

देखें:

#include <stdio.h> 
int car; 
int main() { 
    car = 0; 
    for (int i = 0; i < 10; i++) { 
     int car = 0; 
     car++; 
    } 
    printf("%3d", car); 
} 

बनाम

#include <stdio.h> 
int car; 
int main() { 
    car = 0; 
    for (int i = 0; i < 10; i++) { 
     car++; 
    } 
    printf("%3d", car); 
} 
संबंधित मुद्दे