编辑#3:所以当我用 gcc 编译时,一切正常。如果我使用 clang(3.0 版),它只会给我 0。我很困惑为什么铿锵不会为此工作,因为它看起来相对简单。
编辑#2:好的,所以我已经向所有人确认代码确实有效,但这可能是环境。我在 ARM 三星 Chromebook 上的 Ubuntu 中执行所有这些操作(实际上是通过 chroot)。我正在使用 clang 3.0(只有 -o 标志)来编译所有内容。我在 vim 中输入所有内容。是因为我在 ARM 上发生这种情况吗?
我已经盯着这个看了两个小时了,无法理解我的错误。无论我做什么,浮点数似乎都会返回 0.000000。我试过除以 10000.0,将 10000 存储在 float 类型的变量中,也是 double 类型的变量。
我什至写了一个小程序,它只有一个浮点类型的变量,存储了 1.1,然后是一个 printf("%f", variable),它打印了 0.000000。
编辑:忘了提到 1.1 就在那里,因为我只是在测试浮点数。我知道我必须除以 10000,哈哈。
我究竟做错了什么?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
bool diceRoll (int a)
{
int n = 0;
int b = 0;
while(n < 1) {
b = rand() % 12;
if(b == a || b == 6) n++;
}
if(b == 6) return false;
else return true;
}
int main (void)
{
srand( (unsigned)time(NULL));
int a, n, house, player;
float houseWinRate, playerWinRate;
house = 0;
player = 0;
float total = 1.1;
for(n = 0; n < 10000; n++) {
a = rand() % 12;
if(a == 1 || a == 2 || a == 11) {
house++;
}
else if(a == 6 || a == 10) {
player++;
}
else {
if(diceRoll(a) == true) player++;
else house++;
}
}
printf("%i, %f\n", house, total);
houseWinRate = house / total;
playerWinRate = player / total;
printf("The house has %i points. That's a winrate of %f.\n", house, houseWinRate);
printf("The player has %i points. That's a winrate of %f.\n", player, playerWinRate);
return 0;
}