【问题标题】:Why can't I use integers in the pow() function?为什么我不能在 pow() 函数中使用整数?
【发布时间】:2015-03-01 19:08:09
【问题描述】:

只是一个免责声明,我是这些东西的新手。我只是真正地跨入了 C 和一般的编程领域,所以请注意这一点,谢谢。

你好,堆栈溢出。我在这里有一段代码,无论出于何种原因都不想正常工作。 pow() 函数似乎不喜欢我输入要使用的整数的方式,并且我的 IDE 告诉我参数 1 的参数类型(包含整数的参数)不兼容。难道我做错了什么?这是初学者的错误,我只是错过了一些东西吗?你可以在pow() 函数中使用整数作为参数吗?

这是我正在使用的代码行。另外,请注意,我正在尝试制作一个接受整数并将其平方的程序,通过printf("text") 与用户交流,这是一个非常基本的项目。

SquaredIV = pow(&InputVar, 2);

如果需要,我可以发布更多代码行,但现在我将离开这个。请帮我解决这个代码。谢谢。

【问题讨论】:

    标签: c function integer int pow


    【解决方案1】:

    在 c &address-of 运算符中,它将产生 inputvar 的地址 pow 将无法对此做任何有用的事情..

    代码应该在开头附近。

    #include <math.h>
    

    然后在文件中

    SquaredIV = pow(InputVar, 2);
    

    这实际上并没有使用整数作为 pow 的输入,编译器会在 math.h 中找到 pow 的定义,并且知道它需要将 int 转换为 double(双精度浮点点)并将其发送给战俘。 Pow 会以double 的形式返回结果,并且编译器会知道将其转换为SquaredIV 的任何类型。

    对整数求平方的通常(也是最有效的)方法是将其乘以自身。

    SquaredIV = InputVar*InputVar;
    

    【讨论】:

      【解决方案2】:

      你可以使用整数作为 pow 函数的参数吗?`

      是的,你可以。整数值被隐式转换为正确类型的浮点值。

      在你的情况下:

      SquaredIV = pow(&InputVar, 2);
      

      问题是&amp;InputVar 不是整数类型,而是指针类型,因为&amp; 一元运算符产生一个指向操作数对象的指针。

      【讨论】:

      • 好的,我听你的,你是对的;我放了一个指针而不是整数。虽然这纠正了一个问题,但它揭示了一个新问题:要求用户输入数字的printf() 行出现在打印数字之后而不是之前,当程序第一次运行时!如何使命令首先显示 printf() 行?
      • 顺便说一下,这里是代码。编辑:留下它in a pastebin link 因为格式让我发疯。对不起。
      • @E101K 那么在你的程序中将scanfprintf 语句倒置怎么样?
      • 这不起作用,它产生了完全相同的结果。
      • @E101K 我可以建议您使用可编译的测试用例程序打开一个新问题,其中包含您获得的结果和您期望的结果?
      猜你喜欢
      • 2020-08-22
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多