프로그래밍

 3198, 1/160 회원가입  로그인  
   메버리키
   [C언어] 더블릿문젠데 풀어놓고도 이해가잘안됩니다..

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3023 [복사]


#include <stdio.h>
  
int main()
{
float a=0;
while(scanf("%f",&a)&&a>=0){
printf("Objects weighing %0.2f on Earth will weigh %0.2f on the moon.\n",a,0.167*a);
}return 0;}

달에서무게를 구하는문젠데
입력이 1개가아니라서 와일로돌리는건이해하겠는데.
while(scanf("%f",&a)&&a>=0) 요부분좀 설명해주세요..
scanf("%f",&a)뒤에 &&의 의미를 한개씩 설명해주세요..
감사하겟습니다

  Hit : 4422     Date : 2011/05/29 06:30



    
T3ddyB34r 직접 코딩하신건가요? 그런거라면 꽤 문법을 잘 이해하시는 것 같은데
while()문의 경우 ()안에 값이 참(true)이면 while문 안에 코드를 실행하고 거짓(false)이면
무시하고 나오는 건데요.
논리 조건 연산자를 사용하면 값이 bool형으로 true아니면 false가 나오게 됩니다.
a>=0 의 경우 a가 0 이상일 때만 while문을 실행한다는 의미이구요.
또 함수의 리턴형으로 참과거짓을 판별할 수 있습니다.
scanf는 표준 입력 "함수" 입니다. 함수의 리턴형은 레퍼런스에서 찾아 보실 수 있는데
저도 자세한 것은 잘 모릅니다.
scanf() 함수의 경우는 아마 입력받은 값이 없다면(NULL) 0을(false) 리턴하고
입력받은 값이 있다면 1을(true) 리턴하는 것 같습니다.
&& 의 경우 &&를 기준으로 좌,우 항이 모두 참일경우 1을(true) 리턴하고 하나라도
거짓일 경우 0을(false) 리턴합니다.
||의 경우는 좌,우 항 중 하나라도 참이면 1을(true) 리턴하고 둘다 거짓일 경우에만
0을(false) 리턴합니다.
즉 &&는 AND 연산이고 ||는 OR연산입니다.
2011/05/29  
T3ddyB34r ㄴ 따라서

입력 받은 값이 있고, 그 a값이 0이상일 경우에만 while문안의 소스코드를 실행 시킵니다.
2011/05/29  
메버리키 & 하면 '아 포인터구나' 쪽에 생각이 쏠려가지고 AND 연산인걸 까먹었어요... ㄷㄷㄷㄷㄷㄷ
바본가?ㅋㅋㅋ &a)&&a>1 이런식이라서 혼동했나봐요 아무튼 되게 감사합니다 테디베어님.!
2011/05/30