32비트환경에서 long long 자료형 질문
글쓴이: duse0001 / 작성시간: 금, 2015/10/30 - 11:31오전
#include <stdio.h> #include<stdlib.h> #include<time.h> #include<Windows.h> int running(int var1) { if (var1 < 40) //40%확률(이김) 일때 1리턴 return 1; else return 0; //60%확률(짐) 일때 0리턴 } int win(int money, int var2) { if (var2 == 0) //1등 3배 return money * 3; else if (var2 == 1) //2등 2배 return money * 2; } int lose(int money) { return money; } int game(int var1, int var2, int* money, int betting) { int res; //srand((unsigned)time(NULL)); res = running(var1); if (res == 1) { if (var2 == 0) { *money = *money + win(betting, var2); printf("money : %10d \t betting: %10d Win*3\n", *money, betting); return 0; } if (var2 == 1) { *money = *money + win(betting, var2); printf("money : %10d \t betting: %10d Win*2\n", *money, betting); return 0; } //*money = *money + win(betting, var2); //printf("money : %10d \t betting: %10d Win\n", *money, betting); //return 0; } else if (res == 0) { *money = *money - lose(betting); printf("money : %10d \t betting: %10d Lose\n", *money, betting); return 1; } // return money; } int main(void) { int i = 0, var1, var2, end; static int cnt = 0; static int cnt2 = 0; long long money = 50000000; long long betting = 10000; srand(GetTickCount()); //getchar(); //_sleep(100); var1 = rand() % 100; var2 = rand() % 2; ////for (i = 0; i < 20; i++) ////{ //// var1 = rand() % 5; //// var2 = rand() % 2; //// printf("%d %d\n", var1, var2); ////}rand값확인 유효값확인완료 // ////money=game(var1, var2, &money, betting); ////printf("money : %4d\n", money); //for (i = 0; i < 20; i++) //{ // var1 = rand() % 5; // var2 = rand() % 2; // game(var1, var2, &money, betting); // printf("money : %4d\n", money); //} ////1회게임완료 while (1) { //srand(GetTickCount()); Sleep(10); var1 = rand() % 100; var2 = rand() % 2; betting = 10000; end = game(var1, var2, &money, betting); cnt++; if (end == 1) //패했을시 { while (1) //이길때까지 반복 { //srand(); //Sleep(20); //printf("\t \t %d \n", GetTickCount()); //Sleep(7); //if (cnt2 >= 15) // betting = 10000; betting *= 2; var1 = rand() % 100; var2 = rand() % 2; end = game(var1, var2, &money, betting); cnt++; cnt2++; if (end == 0) break; if (money <= 0) { printf("bankrupt!!! mondy : %d\n", money); printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1); return 0; } } } if (money <= 0) { printf("bankrupt!!! mondy : %d\n", money); printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1); return 0; } printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1); cnt2 = 0; } return 0; }
시뮬레이션을 수백만?정도 해보고싶은데 money값이 int에선 너무 적어서 long long형을 사용해봤는데요
게임함수내에서 money 값이 음수가 돼도 end로 돌아오면 값이 다시 양수로 변하는데요
포인터를 잘못사용해서 그런건가요? int 일때는 잘 되는데 long long 일때는 왜 안되는지 이해가 안되네요 ㅜ
비판 부탁드립니다.
Forums:
코드를 보면
//long long 으로 변경
int game(int var1, int var2, long long* money, int betting)
//%I64d 로 출력하셔야 합니다.
http://sssloveyou.blog.me/30079657672
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
컴파일 경고 전부 수정하세요. win(int
컴파일 경고 전부 수정하세요.
win(int money, ...)
lose(int money)
game(..., int* money, int betting)
댓글 달기