c - 错误 : expected expression before ‘float’

标签 c

我想找出 100 以内的所有质数。这是我的代码。

// Find all the prime number within 100.
#include<stdio.h>
#include<math.h>
#include<stdbool.h>
int main() {
   int i,n;
   int j = 0;
   for ( n = 2; n <= 100; ++n) {
      bool isPrime = true;
      for (i = 2; i <= sqrt(float(n)); ++i) {
         if(n % i == 0) {
            isPrime = false;  
            break;
         }
      }
      if(isPrime) {
         ++j;
         printf("%d is a prime number\n",n);
      }
  }
  printf("The total number of prime number within 100 is %d\n",j);
  return 0;

编译时出现一处错误。

prime.c:14:8: error: expected expression before ‘float’
m = float(n);
    ^

谁能帮忙解决这个问题?谢谢。

最佳答案

你在转换时使用了错误的语法(你使用的是 C++ 的多种类型转换中的一种,但对于 C 来说只有一种方法)。变化:

sqrt(float(n))

sqrt((float)n)

但是请注意,sqrt 需要一个 double,所以严格来说应该是:

sqrt((double)n)

另请注意,转换不是必需的,您可以只写:

sqrt(n)

关于c - 错误 : expected expression before ‘float’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161237/

相关文章:

c - 是否有任何代码片段演示内存泄漏或忘记释放内存分配的危害

在 Mac OS X 中编译使用 OpenGl 的 C 程序

c - 在MPI中,如何编写下面的程序 等待所有计算完成

c - 匿名结构的初始化,gcc 4.9 的解决方法

c - 何时重新发送带有选择性重复 ARQ 的滑动窗口丢失的 ACK

c - 修改 C 函数中的数组

c - sscanf 有什么问题?

c++ - 在 c 和内联汇编之间传递参数

c++ - char 变量是否总是表示为取消引用的 char*[2] 和 {'x' ,\0}?

c - scanf ("%[^\n]") 和 scanf ("%s") 之间的区别?