C中的循环问题

asu*_*day 2 c for-loop nested-loops

我正在尝试使用以下程序计算"2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ 14"(我是一个新手,只能通过将自身相乘一定次数来计算指数).结果应该是32767,但我跑了它并获得了270566475,我想了很久但无法弄清楚为什么......

#include <stdio.h>

int main(void)
{
   int i, e, exponent, sum;

   e = 1;
   exponent = 1;
   sum = 1;

   for (i = 1; i <=14; i++)
   {
       for (e = 1; e <= i; e++)
       {
          exponent *= 2;
       }

       sum += exponent;
   }

   printf("%d\n", sum);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

那么这有什么问题?谢谢!!!

Mar*_*tos 7

你不需要内循环.只需执行exponent *= 2一次,直接在外部循环内部执行.顺便说一句,我认为你必须这样做之后sum += ....

此外,你可以从sum = 0和开始i = 0,这更接近你描述的数学.