我目前正在处理一个问题,这很烦人。这是一个循环,我知道该怎么做,但试图理解 - 为什么 - 第二种情况不起作用。
第一部分很好。
int n;
int trianglenumber;
trianglenumber = 0;
for (n = 1; n <= 200; n++)
trianglenumber = trianglenumber + n;
printf("%I,", trianglenumber");
输出为20100
int n;
int trianglenumber;
trianglenumber = 0;
int result = 0;
for (n = 1; n <= 200; n++)
result = trianglenumber + n;
printf("%I,", trianglenumber");
程序以我不理解的0
的解决方案响应。为什么需要使用两次trianglenumber
,然后将其添加到n
?为什么你不能像我对结果所做的那样设置任何变量来取代 trianglenumber
的位置并得到相同的答案?非常感激。只是想弄清楚这一点。我想这很基本,但我没有看到。
最佳答案
在第二种情况下,trianglenumber + n;
不递增 trianglenumber
。因此,在循环的每次迭代中,您只是将 n
的值放入 result
中。
最后,您最终打印了 trianglenumber
,它仍处于第一个分配值 0。这证明了您获得的输出。
也就是说,%I
不是标准的转换说明符,您应该使用 %i
。使用无效的转换说明符调用 undefined behavior .
关于C编程,循环困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41631172/