byte num = 89;
byte i, k;
byte f = (100 - num) / 10;
이렇게 변수를 선언했는데
디버깅을 하면 맨 아래 f변수 선언한 부분에서 cannot convert type 'int' to 'byte' 라고 뜸
웃긴게, 저기서 num을 그냥 숫자 89라고 써주면 문제없이 디버깅되고
아니면 변수f를 그냥 int로 지정해주면 또 문제없이 디버깅됨
이상한건
변수 num을 명백하게 위에서 byte로 선언했고
같은 바이트병수 f에다 단지 대입했을 뿐인데
값이 byte의 크기를 넘는것도 아니고, 어디에서도 int형 변수를 쓴적이 없는데
왜 자꾸 int를 byte로 바꿀수 없다고 나오는지 모르겠음
지금 30분째 보고있는데 도저히 모르겠다.
자료형에 대해서 검색해봐라
자료형 지정에 전혀 문제될게 없는데도 자꾸 문제가 생겨서 질문하는거임
그리고 나도 c알못이다만 숫자는 기본적으로 int타입으로 찍힌다는건 알음
어디에서도 int형 변수는 선언한 적이 없고, 그저 byte변수를 다른 byte변수에 대입했을 뿐인데 디버그 문제가 생김. 값도 1이라 전혀 범위에서 벗어나지 않고
정말로 궁굼해서 물어보는건대 byte타입을 고정해야할 이유거 있음?
0에서 100이내의 수치계산인데 굳이 메모리 많이먹는 int를 쓸필욘 없으니까
찾음
https://msdn.microsoft.com/en-us/library/5bdb6693.aspx
이거 ㄱㄱ
캬 내가 원하는 답을 완전히 정확하게 찾아줬음 ㄳㄳㄳ
sbyte라도 변수 내 수치계산은 무조건 int이상이 디폴트구나. 이유는 모르겠지만
모든 정수형의 연산은 cpu가 연산하기 가장 적합한 int형으로 계산 후에 그 결과값을 변수에 맞춰 자동 형변환 해서 대입해주지 않나
그게..ㅇ마..이유일걸..
만약 그 오류에 대한 경고를 없애고 싶다면 대입할때 리터럴 상수 옆에 (원하는 자료형)을 넣으면 될걸.................
http://lgstar.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다. - DCW