2014-09-01 109 views
1

编辑:对不起,我正在学习如何使用XCode,并没有看到有其他错误。我删除了该程序并复制/粘贴了源代码以再次创建程序,并且它似乎正常工作。不太确定那里出了什么问题。奇怪,我得到了那个错误。简单的错误C程序

#include <stdio.h> 


int main(void) { 
    int heartBeatsPerSecond, daysInYear, secondsInYear, beatsPerYear; 
    heartBeatsPerSecond = 1; 
    daysInYear = 365; 
    secondsInYear = 60*60*24*365; 

    beatsPerYear = heartBeatsPerSecond * secondsInYear; 
    return beatsPerYear; 
} 
+4

当您尝试运行或编译?瞥一眼它看起来很好。什么编译器?你的命令行是什么? – John3136 2014-09-01 00:25:21

+1

无法重现;程序编译(启用警告)并运行对我来说非常好。 – jwodder 2014-09-01 00:28:09

+1

@edtheprogrammerguy:void main无效C. – hugomg 2014-09-01 00:33:43

回答

3

您的代码在这里运行。这是不正确的,但它运行。因为你的乘法溢出(至少在我的平台上)。我建议你修复溢出一样,

int heartBeatsPerSecond = 1; 
int daysInYear = 365; 
long secondsInYear = 60*60*24*365; 

long beatsPerYear = heartBeatsPerSecond * secondsInYear; 
printf("%li\n", beatsPerYear); 

输出(当我运行它)是

31536000 
+0

我以为我已经重新检查了允许使用普通int的长度,但它的数量还不够大。 – vikingcode 2014-09-01 00:35:22

+1

@vikingcode 31536000适合32位int,但使用C时,不能保证整数是32位。 Elliott的平台可能只有16位整数(这不会保留你的结果)。 – John3136 2014-09-01 00:43:22