사용하는 프로그램은 Visual Studio 2013 Professional
#include <stdio.h>
#include <stdlib.h>
int main(void){
short sh = 32767; // short 형의 최댓값 초기화
int in = -2147483648; //int형의 최솟값 초기화
long ln = 2147483647; //long 형의 최댓값 초기화
long long lln = 123451234512345; // 아주 큰 값 초기화
printf("short형 변수 출력 : %d\n", sh);
printf("int형 변수 출력: %d\n", in);
printf("long형 변수 출력: %ld\n", ln);
printf("long long형 변수 출력: %lld\n", lln); //long long은 %lld, long 은 %ld
system("pause");
return 0;
}
라 쳤더니
int in = -2147483648; //int형의 최솟값 초기화
이부분에서 오류가 난다
error C4146: 단항 빼기 연산자가 부호 없는 형식에 적용되었습니다. 결과는 역시 unsigned 입니다
이렇게 나오는데 왠지 모르겠음 책에 잇는거 복붙해도 똑같은 오류난다
두번째 문제는
#include <stdio.h>
int main(void){
int a; // 변수 선언
int b = 20; // 변수 선언과 동시에 값 초기화
int c; // 변수 선언 후 초기화 안함. 쓰레기 값 출력
a = 10; // 변수 값 정의
printf("a:%d\n", a); // 값 출력
printf("b:%d\n", b);
printf("c:%d\n", c); // 쓰레기 값 출력 시 빌드에 오류 생김.
return 0;
}
라고 하고 컴파일을 했어
책에서는 컴파일 하고 에러 c4700 : 초기화되지 않은 'c' 지역 변수를 사용했습니다
라고 나오면 그거 무시하고 컴파일 한다음에 실행해서 garbage값을 보라는데
어떻게 무시하고 컴파일하냐??
일단 limits.h 사용법을 배워 숫자 그렇게 쓰지 말고
책에 나온 순서대로 하고 예제 보고 연습하는 단계라..
에러코드 구글링해보고, 에러가 아닌 warring은 무시가능
1번은 오류가 날수가 없는데? 저 숫자가 범위를 넘으면 넘은만큼 반대로 출력되는거니까. 그리고 넘지도 않음 잘했음 저거 다 맞는데??? -인식을 못하는거 아님? 다시 깔아봐
-2147483648 말고 양수로 2147483648 해서 -2147483648 나오는지 확인해바
비쥬얼 스튜디오 할때 프로젝트 만들고 항목 추가할대 c++파일 선택하고 파일이름.c로 한거 맞음?
http://msdn.microsoft.com/ko-kr/library/4kh09110.aspx
알마님아 링크 참고
2번은 애러 뜨잔아?? 거기서 무시 누르면 가비지값 나온다
그러니까 지금 너가 int를 선언했는데 컴파일러는 자동으로 unsigned int로 인식한다는거임??
지금 컴파일러가 저 식은 unsigned int로 인식하고있네
난 잘되는데 다시 깔아봐 ㅋㅋ 나도 컴파일러 관련된거는 잘몰라 어셈블리언어로 만들어준다는거만 알고있지
2번은 아까 내가말한것처럼 무시 누르면 가비지 값 나옴
근데 저게 1번이 unsigned 해도 어차피 자동 형변환 되는데 내생각엔 먼가 문제가 잇는거같어 여기 컴파일러 고수업나 ㅋㅋ 다시 깔아봐 2010 추천
%U를 한것도 아니고
두단계로 처리한다는데? 일단 양수로 보고 부호를 바꾸는데 양수에서 넘었다고 하네.. 2번은ㄱ그렇네..