我想编写一个如下所示的函数。我想在整数中设置第n位。例如,我想在数字8中设置第6位。
#include<stdio.h>
int set_bit(int number , int postion);
int main()
{
int a;
a=(8,6);
}
int set_bit(int number , int position)
{
number = number |(1<<position);
}
上述功能无效。谁能纠正我?
答案 0 :(得分:5)
两个问题:
您没有致电该功能:a=(8,6)
应该阅读a = set_bit(8, 6)
。
您没有从函数返回值:number = number |(1<<position)
应该阅读return number | (1 << position)
。
答案 1 :(得分:2)
您可能希望返回number
,因为参数是按C 中的值传递的。因此,简单地修改函数内的number
对调用者没有任何影响。
正如ruakh在评论中提到的,调用函数的语法不正确。
尝试:
int set_bit(int number , int position)
{
return number | (1 << position);
}
/* ... */
a = set_bit(8, 6);
作为旁注:您确定单行代码需要单独的功能吗?
答案 2 :(得分:-2)
“return number|(1<<position)
”是否适用于所有情况
如果position
位已经设置且我们再次尝试设置position
位,则(position+1)
位会发生溢出...