2012-09-22 7 views
0

따라서 변수 hoursWorked은 초기화되지 않습니다. 그런데 사용자가 저장하는 항목이 무엇이든 동일하게하려면 어떻게 초기화해야합니까? 예를 들어, 어떤 사람이든지 cin에 출력하려면 hoursWorked을 입력하고 싶습니다. 여기 내 코드입니다 :변수가 초기화되지 않고 사용 중입니다

#include <iostream> 

using namespace std; 

int main() 
{ 
    //Declare Variables 
    double hoursWorked; 
    double payRate; 
    double incomeBeforeTax; 

    payRate = 15; 
    incomeBeforeTax = payRate * hoursWorked; 

    cout << "Enter hours worked: "; 
    cin >> hoursWorked; 
    cout << endl; 
    cout << incomeBeforeTax << endl; 

    return 0; 
} 
+0

이에서 얻을 수있는 첫번째 것은 C++가 기호 처리 언어되지 않는 것입니다. 'incomeBeforeTax'가'payRate * hoursWorked'라고 가정한다는 것을 "암기"하지 않습니다. – Mysticial

+0

계산하기 전에 입력을 가져올 수없는 이유는 무엇입니까? –

+0

@ coding Mash ..... cin >> hoursWorked; double hoursWorked; ?? – Isaac

답변

1

당신이 cin에서 읽어 초기화 한 후 발생하는 hoursWorked 요구 사항을 참조 incomeBeforeTax의 계산. cin >> hoursWorked; 후 그 라인을 이동하고 그것은 작동합니다

payRate = 15.0; 

cout << "Enter hours worked: "; 
cin >> hoursWorked; 

incomeBeforeTax = payRate * hoursWorked; 

cout << endl; 
cout << incomeBeforeTax << endl; 

C++를, 대부분의 절차 언어가 기록 된 순서대로 코드를 평가처럼. 즉, incomeBeforeTax = payRate * hoursWorked;은 및 hoursWorked의 현재 값에 따라 incomeBeforeTax에 값을 할당합니다. 이러한 작업은 할당이 수행되기 전에 정의되고 초기화되어야합니다. 그것이 cin >> hoursWorked입니다.

참고로 double 변수는 double 리터럴로 가장 잘 초기화되므로 값에 .0을 추가하십시오. hoursWorked 전에

incomeBeforeTax = payRate * hoursWorked; 

를 사용하여

+0

정수와 함께 double을 초기화 할 때 문제가 있습니까? 좋은 컴파일러는 올바른 일을 할 것입니다. –

+0

OMG 정말 고마워 ..... 내가 뭘 잘못 했니? @ Alexey MSVS를 사용하고 있습니다. C++ express – Isaac

+0

C++은 일반적으로 흐름 제어 (for, while, goto 등)가있는 모든 항목을 순서대로 실행합니다. 당신이 가진 방식대로, 당신은 "시간당 근로자 수를 곱해서 소득으로 저장합니다."라고 썼습니다. 그러나 시간당 근로자는 아직 가치가 없습니다. 아무것도 그것에 쓰여지지 않았다. C++에서 incomeBeforeTax가 정의/선언하지 않으면, 해당 라인을 실행할 때 해당 논리를 실행하도록 지시합니다. –

0

incomeBeforeTax이 할 조치의 의도를 표시하는 것, 초기화되었습니다. 의도를 유지하는 한 가지 방법은 함수를 만들고 incomeBeforeTax이 필요할 때마다이 함수를 사용하는 것입니다.

예 :

#include <iostream> 

using namespace std; 

int main() 
{ 
    //Declare Variables 
    double hoursWorked; 
    double payRate; 

    // Define a function that encodes the intent of what 
    // incomeBeforeTax needs to be. 
    auto incomeBeforeTax = [&]() { return payRate*hoursWorked; }; 

    payRate = 15; 

    cout << "Enter hours worked: "; 
    cin >> hoursWorked; 
    cout << endl; 
    cout << incomeBeforeTax() << endl; 

    return 0; 
} 
관련 문제