gpt4 book ai didi

c - C 中的函数总是返回相同的任意数字

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

所以我试图获得任意两个数字的幂,

int expo(int base, int expon){
int z = 1;
printf("%i",&z); // Here i get 635678
if (expon == 0){
printf("A"); // this gets printed if expon== 0
return 1;
}
else{
for (int x=0; x < expon; x++){
z *= base;
printf("%i",&z); // here i get 6356780
}
return z;
}

}

最让我惊讶的是第一个 635678,我只是告诉计算机 z = 1 !,第二个是当它打印 A 时,它甚至不返回 1。它总是返回 6356776。(我只是声明一个 int 值作为函数的结果并打印 int,也许我什至做得不好)。我不关心这个特定的功能,我只想知道我在告诉计算机什么,因为它显然不是我想的那样。谢谢并抱歉,因为这个问题很可能不应该出现在这里。

最佳答案

嗯,你这样做是错误的:

printf("%i",&z);

%i 用于打印整数,但您传递的是一个指向整数的指针 - 您应用 &(地址的)运营商。

这是未定义的行为。简单的解决方案:删除 &


我有一个理论你是如何得到这段代码的:你可能被教导使用 scanf() 来读取输入(我的另一件事 would question ,但让我们暂时把它放在一边)。

使用 scanf(),您需要将 指针传递给 int 并进行 %i 转换说明符。但那是因为 scanf() 必须设置变量的值,而在 C 中,变量是按值传递,这只能通过指针来实现。 p>

printf() 另一方面只需要打印一个值,它不需要修改任何东西。所以它直接需要这个值,而不是指向它的指针。

关于c - C 中的函数总是返回相同的任意数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44960870/

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