繁体   English   中英

pow()中C的语法错误

[英]Syntax error in c with pow()

无法弄清楚我遇到的语法错误,我有正确的标题,所以不知道

int get_block_size(int num) {
    int i= 0;

    for (i=0; num < pow(2.0,double(i)); ++i);

    return int(pow(2.0,double(i)));
}

我得到的错误

sidhuh@ius:~ $ gcc -o b buddy.c
buddy.c: In function `get_block_size':
buddy.c:24: error: syntax error before "double"
buddy.c:24: error: syntax error before ')' token

您将idouble是不正确的:在C中,将类型放在括号中,如下所示:

for (i=0; num < pow(2, (double)i); ++i)
    ;
return (int)(pow(2,(double)i));

这应该修复语法错误。 但是,这并不是最有效的-您可以通过向左移动1来获得2的幂,因此无需编写

(int)pow(2, i)

你可以写

1 << i;

这样做的原因相同,您可以通过在1之后写入k零来在十进制系统中获得10的k幂。

注意:您似乎正在尝试将数字四舍五入到最接近的2的幂数。 有一个“小玩意儿”,可以帮助您以更少的操作并且没有循环的方式完成操作。 请按照此处的说明进行操作。

unsigned int v; // compute the next highest power of 2 of 32-bit v
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
v++;

int是一种类型,而不是一个函数,所以我认为编译器不喜欢int(...是指像

(int) pow(2.0, (double) i) 

也许? 这就提出了其他错误条件,但至少在语法上是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM