gpt4 book ai didi

c - 简单 C 程序中的意外输出

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:38 24 4
gpt4 key购买 nike

因此,我尝试编写一个简单的 C 程序,它可以在不使用 * 运算符的情况下计算两个数字的乘法。但结果并没有如预期的那样到来。我不明白为什么。这是代码:

#include<stdio.h>
int main()
{
int a=1,b=1,c=1,i;
printf("\n 1st element=");
scanf("%d",&a);
printf("\n 2nd element=");
scanf("%d",&b);
for(i=0;i<b;i++)
{
a=a+a;
}
printf("\n result=%d",a);
return 0;
}

最佳答案

你实际上是用你的循环将 a 指数加倍。

比如说 b = 3a = 5,例如。然后循环将运行 3 次。

展开循环会产生:

a = 5; /* initial value of a */

/* now run a=a+a; three times */
a = 5 + 5 = 10;
a = 10 + 10 = 20;
a = 20 + 20 = 40;

所以你不会得到 15,但你会得到 40。

相反,创建一个新变量,如 sum = 0,然后将 a 的值添加到 sum 上,如下所示:

sum = 0;
for (i=0; i<b; i++)
sum += a;

顺便说一下,+= 运算符是一个很棒的运算符,它只是将其右侧的值添加到其左侧的变量上。它比误导性方程式 a = a + a 好得多,也没有那么难看,除非 a = 0,后者甚至没有数学意义。

关于c - 简单 C 程序中的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com