너무 많이 질문하는게 아닌지 모르겠네요;;
하늘
/* op5.c*/
#include stdio.h
int main(void)
{
int val1=10;
int val2=(val1--)+2;
printf(val1 : %d \n, val1);
printf(val2 : %d \n, val2);
return 0;
}
오류는 아닙니다.
증감 연산자에 대한 문의 입니다.
책에 있는 예제고 결과를 보면
val1 : 9
val2 : 12
로 나옵니다. 그런데 제가 생각하기는 조저히 이해가 안가는게.. val1은 그냥 10으로 초기화한값이 추력되는건데 -1이 되었고 val2는 12로 그대로 나왔는지가 의문입니다.
만약 괄호안에 값이 먼저 연산이 되야한다면 val2값도 11이 되어야 하는게 아닌가요?
그리고 val2값이 선언될때 val1--이 되기 때문에 그당시 -1이 된거고 그래서 val1이 9로 입력이된건가요?
그리고 연산이라는 말이어려운데 쉽게 말하자면 뭐 없을까요;;;?
마지막으로..
op1.obj : error lnk2005: _main already defined in op6.obj
debug/op6.exe : fatal error lnk1169: one or more multiply defined symbols found
error executing link.exe.
이런 애러가 자꾸뜹니다.. 어떤때 뜨냐면 한가지 예제파일을 만들어보고 컴파일 하고 링크하고 실행까지 시켜서 확인후
다음 예제로 넘어가면 컴파일은 아무 문제 업는데 링크만하면 이런 에러가뜹니다. 근데 희한하게 프로그램을
껏다 키면 됩니다 ㅡ,.ㅡ 잠깐 찾아봣는데 메인을 선언을 두번해서 그렇다고 그랬는데 그래서 제가 그전에 햇던
것을 어떻게 좀 해보려 햇는데 비주얼스튜디오란 프로그램이 너무 생소해서 어떻게 해야할지 모르겟네요..
이것도 어떻게 해결이 안될까요;?
-
Elfin
서운하게 들리실지 모르겠으나 노파심에 한 마디 드리자면...
본 사이트의 취지가 소스등의 정보를 공유하기 위한 차원임에도
나름 q&a에 대해서는 많은 분들이 참여해주고 계시지만
개인 학습을 위한 학원이 아닌 이상은 시간만 투자하면 해결 가능한
사소한 것까지 일일이 답을 얻기란 쉽지 않을것입니다.
초반에는 어느 정도 사람들이 많이 도와줍니다만...
그 정도가 심해지면 결국에는 도움이 필요할때 버림받게 될 수 있습니다.
기초 공부를 하는 도중에 부딪히는 대 -
두힘
흠... 보통은... 저런식의 사용을 권장하지 않습니다.
이유는 베어님과 같은 분들을 위해서 그렇습니다.
즉, 가독성이 떨어진다는 것이겠지요?
주로 얼마나 정확하게 해당 문법을 이해하고있는지 등의 예제나..
시험에나 나올 만한 예제로 보시면 무난할 것 같습니다.
요즘은, 저런식으로 작성한 소스는 좋은 이미지를 남기지는 않습니다.
물론, 저 정도는 상당히 매너적인 소스입니다.
세부적인 실행에 대해서는 인터넷에서 연산자 우선순위와 관련된
글들을 많이 -
철죽
int val2=(--val1)+2;
처럼 -- 연산자가 변수명 앞에 사용되었으면,
val1 = val1 - 1;
int val2 = val1+2;
의 2라인 문장을 한 라인에 적용한 경우입니다.
즉, val1 = val1 - 1;
이라는 문장을 해당 라인 앞에서 실행 할 것인지..
뒤에서 실행할 것인지로 생각하시면 됩니다.
상당히 복잡하게 꽈 놓은 예제들도 많습니다만...
증감 연산자에 대한 상세한 자료들도 많으니 인터넷 찾아 보시고...
왠만한 -
지후
++
--
같은 증감 연산자는 변수명 앞에 붙는지..
뒤에 붙는지에 따라서 연산 결과가 달라집니다.
세부적인건 연산자 우선순위와 관련된 글 찾아보시고...
int val2=(val1--)+2;
의 경우 대입 연산자인 =가 가장 연산 순위가 낮 습니다.
괄호가 연산순위가 가장 높기때문에 괄호안의 val1-- 가 제일먼저 실행됩니다.
val1 --는 val1 = val1 - 1 을 축약한 것입니다.
하지만, --가 변수명 뒤에 사용되었기때문에
적용시기 -
또야
그러면 순서가 이것인가요 va1=10선언 val2선언 하면서 그때 저장되어있는val1이 마이너스
하지만 val2는 연산후 감소니 마이너스 되기전 val1값에다가 +2를해서 12가 되는건가요?