mdl1220   2년 전

c언어 문제를 풀다가 최대값이 필요해서 위의 것처럼 썼는데 어디서 틀린지를 몰라 2시간동안 코드와 눈씨름 하다가 밑처럼 고쳤더니 드디어 풀렸습니다

c초보자 눈엔 똑같아 보이는데 왜 전혀 다르게 값이 나오는 걸까요?

이유를 가르쳐 주십시요ㅠㅠ

fjvbn2003   2년 전

C언어를 포함한 프로그래밍 언어에서 '=' 등호연산자는 "같다"라는 의미가 아니라 "대입"의 의미를 가집니다.

그래서 순서가 존재하는데 등호를 기준으로 오른쪽에 있는 값을 왼쪽에 넣는다는 의미가 됩니다.

if (s[i] > max)
    s[i] = max;

 "의 경우는 s[i]에 max 값을 넣는다." 라는 의미가 되겠죠.

if (s[i] > max)
    max = s[i];


반대로 위의 경우는

"의 경우는 max에 s[i] 값을 넣는다." 라는 의미가 되겠죠.

그래서 결과가 달라지는 것입니다.

참고로 프로그래밍에서 "같다"를 표현하려면 "==" 등호연산자를 두개 사용하면 됩니다~

더 궁금한 점이 있다면, 대입 연산자를 구글링해서 공부하시면 이해가 훨씬 빠르게 될 것입니다.


 

mdl1220   2년 전

시간 내서 답변주셔서 감사합니다! 하나 배워갑니다

댓글을 작성하려면 로그인해야 합니다.