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)
댓글 달기