我目前正在使用C并遇到了一些我觉得有趣的东西,但似乎无法在这里找到类似的东西。
我正静态地为数组分配内存(大小为1000000)。我知道这很大,有可能引发问题。但是,使用10 ^ 6导致没有问题,而1000000导致崩溃,可能是由于巨大的尺寸。我想知道如果我继续使用10 ^ 6,是否会出现任何限制。
int main() {
int i, n, MAX = 10^6; //change 10^6 to 1000000 to cause crash
int highest, newHighest, lowest, profit, newProfit;
int arr[MAX];
return 0;
}
我已确认我的代码在第4行崩溃。任何信息都将受到赞赏。
由于
***编辑分号
答案 0 :(得分:5)
int i, n, MAX = 10^6 //change 10^6 to 1000000 to cause crash;
此10^6
不是您认为的那样。 ^
运算符在c中是按位XOR。10^6
不是1000000
。
如果您打印10^6
,则等于12
,并且没有理由崩溃。
答案 1 :(得分:0)
^是一个不用于幂(指数)的按位运算符
使用pow功能。这需要双打才能实现。
因为您使用了按位运算符,所以您实际上从未获得过那么大的数字。所以程序永远不会崩溃。