안녕하세요...
C언어를 배우고있는데 문제풀면서 이해가 안되는게 몇가지있네요...
1. 예를들어 이러한 문장이 있다고 칩시다
double n1 = 83.768;
printf("dog = %5.2f\n", n1);
그러면 n1이라는 변수를 5개의 공간을 만들고 소수점 둘쨰짜리까지 표현한다 이뜻이잖아요???
n1이라는 숫자가 83.768 이라고 쳤을때
5.2f 면 8 3 . 7 7 이렇게 출력되고
7.4f 면 8 3 . 7 6 8 0 이렇게 출력되는게 아닌가요??
근데 책에는 5.1f = 공백 공백 공백 8 4 이렇게 출력된다고 나오네요 ( 공백 공백 8 3 . 7 ) 이 아니라... 왜그럴까요..
==============================================
2.
여기서 나오는 저 2는뭐죠 ㅋㅋㅋㅋ? 이해가안되요... 갑자기 2가 뜬금없이 나오네요
============================================
3.
int a= 100, b= 10 , c;
c = ( a+=20 ) || ( b += 10) ;
이런 식에서 풀어보면
c = ( a = 100 + 20 ) || ( b = 10 + 10 )
인데 왜 c가 1이죠?
a랑 b 둘다 거짓이 아닐때 = 1 둘다 거짓이면 = 0 인데..
a = 120이고 b = 20인데
120 || 20 이게 왜 1인지 모르겠어요..
4.
a++ 이거는 ( ; ) 이 부호 다음으로가면 변경된다고 이해해도되나요??
음 그니까
int a=10;
a++, printf("a=%d,a);
이럴땐 a = 10
a++ ; printf("a=%d,a);
이럴땐 a = 11
맞나요???
5.
풀어보자면
--x; // x가 0되고 다음으로 넘어감
y= ++x + 1 ; // y에 x가 1증가한값 ( 1 ) + 1을 넣음 식이 끝났을때 x=1 y=2
z = y ++ + ++x // z에 y ( 2 ) 와 x ( 2 ) 를 넣음 그리고 y를 1증가시킴 식기 끝났을때 z=4 y=3 x=2
그래서 답은 x =2 y = 3 z= 4 아닌가요?....
=============================
6.
저런식이면 x < 10 이면서 x > 20 인 이런뜻아닌가요?
답은 1번인데 &&써야하는거 아닌가요..
왜 x < 10 또는 x > 20 이 되는거죠??..
해결함 ㅋ
=========================================
이상입니다..
아시는거 한두개라도
부탁좀 드리겠습니다 ㅠㅠ
멍청한건 이해합니다 욕하셔도됩니다
nopsled
폰이라서 마지막꺼만 답해드림
&& 쓰면 1부터 안되잖아 ㅋㅋ
파히비
아아아아아
저게 범위가 그러네... 겹치는게 없네요 ㅋㅋㅋ 잘못생각했네요 감사합니다!!
MylenE
파히비
감사합니다 1번은 책이잘못된거같네요 ㅋㅋㅋ
8AiTNaVl
% n.m f 일때
n은 정수부분 자리수 m은 소수부분 자릿수
5.1f 는
00012.3
2번은 무슨 2를 말하는지 모르겠다
3은 둘다 0이 아니여서 1됨
4는 이번 문장이 끝날때 +1
5는 printf 문 안에 있는 전위연산자도 생각을 해야하니까 다시 한번 생각해봐
6은 10보다 작거나 20보다 클때 출력이니까
10보다 작으면서 20보다 클때 출력이면 &&
8AiTNaVl
3번은 정확히 말하면
c = (a += 20) || (b += 10);
일때
(a += 20) 부분을 0이랑 cmp 해서 바로 1 튀어나옴
8AiTNaVl
앵? 책에 5.1f가 소수점이 안나온다고?
파히비
엌ㅋ 5번 프린트문을 안봤네요... 감사합니다
년째군생활중
4번은
printf("%d",a++); 했을때 10나오고
printf("%d,++a); 했을때 11나오는게 아니냐?
년째군생활중
3번은 비교연산자가 아니라 대입연산자를 넣었으니까 1나오는 거겠지?
년째군생활중
2번에 2는 출력이 아니라 입력한거같은데
scanf 값을 입력해줄때 공백이 들어가있으면
다음으로 넘어가지 않고 다른 값을 다시 입력해야
넘어간다는 뜻인거 같은데 그 다시 입력한 값의 예로 2를 써놓은듯
파히비
아아아아 이해했어요 ㅋㅋㅋ
그런뜻이구나 뭔가했네 ㅋㅋㅋㅋㅋ
Hearthstone
1. 소수점 나와야하는데 책이 ㅄ인듯, 그리고 소수점 .도 세야함 5.1f면 (공백 8 3 . 8) 임
2. 2도 사용자가 입력한거임
3. true || true라서 1준거임
4. a++, printf("a=%d,a); 쓰는 사람 없는데 이것도 아마 11나올거임 근데 쓰면 위에 댓글 쓴사람 말처럼 뒷통수 맞음
5. 마지막 printf에도 ++있음
파히비
아 맞다 자꾸 까먹네요 .도 포함!!
그리구 3번은 왜 트루가나오는거에요
a=120 이게 왜 참인거죠??
파히비
그냥 단순이 a는 120이니까 120=120이여서 참 이런뜻인가...?
년째군생활중
논리연산자에서는 그냥 0이 아니면 무조건 참이야
파히비
아 오키 떙큐
년째군생활중
너가 c = ( a = 100 + 20 ) 또는 c = ( b = 10 + 10 ) 이렇게 썼다면 각각 120 , 20 이렇게 나왔겠지만
그걸 논리연산자로 묶어버리면 둘중 하나라도 0이 아니니까 1이 나올 수 밖에 없지
파히비
나는 논리에서0 과 1이 단지그냥 참과 거짓이라는 문자로 이해했어서 헷갈린듯
숫자로도 봐야하구나