2011-10-31 30 views
6

Tôi mới dùng C++ và tôi đang cố gắng tăng ô tô bắt đầu với giá trị 50, nhưng chỉ tăng thêm một lần nếu chênh lệch lớn hơn thẻ. Tôi muốn những chiếc xe giữ giá trị của nó trong lần sau nó chạy qua vòng lặp. Tôi hy vọng điều này có ý nghĩa.cách tăng biến được tham chiếu bằng 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 
    { 

Trả lời

8

Bạn đang tuyên bố một biến mới shadowing một bản gốc.

thay đổi

int car = car + 1; 

để

car = car + 1; 
7

Bạn cần gán lại cho cùng biến số. Bạn đang khai báo một biến mới.

Thay đổi này:

int car = car + 1; 

Để này:

++car; 
0

Bạn đang tuyên bố một biến mới car bên trong câu lệnh if mà ẩn car biến ban đầu từ phạm vi trên. Việc xóa loại sẽ cho phép bạn tham chiếu biến hiện tại thay vì khai báo biến mới.

Nói tóm lại, thay đổi

int car = car + 1; 

để

car = car + 1; 
0

Vấn đề của bạn là khi bạn nói

int car = car + 1; 

cơ bản Bạn đang tạo một biến địa phương gọi là xe (địa phương để các if statement) được gán giá trị là 51 (vì biến phạm vi cục bộ ban đầu (cục bộ đến chính) chứa 5 0 và bạn thêm 1). Biến cục bộ này (lệnh on trong câu lệnh if) bị hủy khi bạn thoát khỏi câu lệnh if.

Nếu bạn thay đổi này để

car = car + 1; 

Bạn đang sửa đổi các biến địa phương để chính, và do đó bản cập nhật sẽ được lưu giữ.

0

Tôi không thấy một vòng lặp, nhưng tôi sẽ đánh bạo đoán rằng vấn đề của bạn là bạn đang làm dòng này:

int car = car + 1; 

tại của bạn:

if(carDamage < yourDamage) 

tuyên bố có nghĩa là bạn đang redeclaring mỗi lần, đặt lại giá trị của nó.

viết int car; hoá không cồng kềnh và báo cáo kết quả chỉ làm ++car; bên trong vòng lặp mà bạn ban đầu được viết int car = car + 1;

1

Bằng cách này:

int car = car + 1; 

Bạn đang tái định nghĩa xe như một số nguyên.

see:

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

vs

#include <stdio.h> 
int car; 
int main() { 
    car = 0; 
    for (int i = 0; i < 10; i++) { 
     car++; 
    } 
    printf("%3d", car); 
} 
Các vấn đề liên quan