C++ 변수 초기화, 대입

조회수 171회
#include<iostream>
using namespace std;

int main()
{
    int i = 10, j = 0,k=0;
    for (i; i < 31; i++)
    {
        for (j; j < 6; j++)
            k = (i * j) + k;
    }
        cout << k << endl;
}

를 출력하면 값이 150이 나오고

#include<iostream>
using namespace std;

int main()
{
    int i , j, k=0;
    for (i=10; i < 31; i++)
    {
        for (j=0; j < 6; j++)
            k = (i * j) + k;
    }
        cout << k << endl;
}

으로 출력하면 값이 6300이 나옵니다.

차이는 처음에 변수를 선언할 떄 값을 넣는지, for문 안에서 값을 넣는지 차이 같아서 인터넷에 찾아보니까 초기화와 대입의 차이인 것 같은데 명확하게 이해가 안되서 여기 적어봅니다. 아직 아는게 많지 않아서 잘부탁드립니다.

1 답변

  • #include<iostream>
    using namespace std;
    
    int main()
    {
        int sum = 0;
    
        for (int i=10; i < 31; i++)
        {
            for (int j=0; j < 6; j++)
                sum = (i * j) + sum;
        }
    
        cout << k << endl;
    
        return 0;
    }
    
    

    컴퓨터의 입장에서는 크게 차이가 없겠죠. 하지만 그 코드를 보는 프로그래머 입장에서는 큰 차이가 있습니다.

    전자는 옛날 C언어에서 문법적으로 지원을 안해줘서 저렇게 작성한걸로 알고 있습니다. 결과값이 다른건 이해가 안가네요. 뭔가 다른게 잘못된 것 같습니다.

    가독성에서 큰 차이가 납니다. 전자처럼 코드작성하면 일부로 멕이는거냐고 물어볼 것 같습니다.

    • 코드를 잘 보시면 다르게 나오는 이유는 명확한데 자세히 안 보신 듯하네요. j 가 첫번째 루프에서 6까지 증가한 후에 다음에 돌아올 때에 0으로 자동으로 리셋되지 않으니까, i = 11...30 까지는 안쪽 루프에 들어가질 않죠. daewon 2022.1.12 12:53
    • 오... 감사합니다 박준형 2022.1.12 13:09

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.