Функция, которая принимает целое число n и устанавливает n-й бит - PullRequest
3 голосов
/ 02 декабря 2011

Я хочу написать функцию, как показано ниже. я хочу установить n-й бит в целое число. например, я хочу установить 6-й бит в числе 8.

#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);
}

вышеуказанная функция не работает. Кто-нибудь может меня поправить?

Ответы [ 3 ]

5 голосов
/ 02 декабря 2011

Две проблемы:

  1. Вы не вызываете функцию: a=(8,6) должен читать a = set_bit(8, 6).

  2. Вы не возвращаете значение из функции: number = number |(1<<position) должно читать return number | (1 << position).

2 голосов
/ 02 декабря 2011

Возможно, вы захотите вернуть number, поскольку аргументы передаются по значению в C . Поэтому простое изменение number внутри функции не имеет никакого эффекта для вызывающей стороны.

Как упомянуто в комментариях ruakh, ваш синтаксис для вызова функции неправильный.

Попробуйте:

int set_bit(int number , int position)
{
    return number | (1 << position);
}

/* ... */

a = set_bit(8, 6);

В качестве примечания: Вы уверены, что одна строка кода требует отдельной функции ?

0 голосов
/ 06 сентября 2014

Работает ли "return number|(1<<position)" во всех случаях

Если position -й бит уже установлен, и мы попытались установить position -й бит снова, произойдет переполнение (position+1)-го бита ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...