现在的位置: 首页 > 综合 > 正文

运算符优先级问题

2019年07月21日 ⁄ 综合 ⁄ 共 161字 ⁄ 字号 评论关闭

设计一个函数计算2n+1:

int func(int n)
{
	return n << 1 + 1;
}

这个函数得到的结果是4*n。

使用左移一位代替乘以2的运算,是很好的方法,但在C/C++中“+”运算符优先级高于“<<”,因此会先进行加法运算再左移两位,得到结果4*n。

正确写法是:

int func(int n)
{
	return (n << 1) + 1;
}

抱歉!评论已关闭.