Intereting Posts
Можете ли вы помочь мне с коротким кодом, который может печатать сам? Linux TCP-сервер: чтение IP-адреса клиента перед принятием соединения Инкрементные указатели функций Как установить переменную среды в ISO c99 Standard C без setenv ()? Невозможно скомпилировать приложение ac, которое считывает смарт-карту Как синхронизировать процессы через статическую библиотеку в Linux? Объявление глобальной переменной `extern const int` в заголовке, но только` int` в исходном файле #Include токен ключевого слова type? Двойное умножение отличается от времени компиляции и времени выполнения на 32-битной платформе Увеличить квант streamа из пользовательского режима Соглашения об именах библиотек C Является ли чтение / dev / urandom streamобезопасным? приведение к указателю из целого числа разного размера, pthread code C: Функция для генерации случайной строки и добавления ее в структуру Значение аргумента pthread изменено

Как повысить силу

Я очень новичок в C

Я пытаюсь что-то придать чему-то

например. 5 ^ 3 = 125;

но когда я код

#include  ... printf("%d", 5^3); 

Я получаю 6. Я делаю что-то принципиально неправильно?

^ – побитовый оператор XOR в C.

5101 в двоичном представлении, а 3011 . Итак, 101 XOR 011 = 110 , что равно 6 в десятичной системе.

То, что вы хотите, это pow(5,3) (который доступен после включения math.h как и вы). Обратите внимание, однако, что он действует на парные числа не целые, поэтому ваше возвращаемое значение будет плавающей точкой и вообще не точным. Если вам нужно точное целочисленное возведение в степень, вам нужно либо использовать дополнительную библиотеку, либо реализовать свою собственную функцию власти. Это не так сложно, поскольку алгоритм видит возведение в степень по квадрату . Стандарт C не включает функцию для целочисленного возведения в степень. Во всяком случае с целочисленным возведением в степень важно заботиться о переполнениях , что может произойти уже при малых входных значениях.

Кроме того, для печати возвращенного двойника вам нужно либо перевести double в int printf("%d", (int)pow(5,3)) либо распечатать его как printf("%f", pow(5,3)) плавающей запятой printf("%f", pow(5,3))

^ является оператором XOR в C.

Вместо этого вы должны использовать функцию pow из math.h , однако pow возвращает double

 #include  ... printf("%d", (int)pow(5, 3)); 

Вы должны использовать pow(5,3) .

Вы используете побитовый оператор XOR ( ^ ): в двоичном формате это 101 ^ 011 , то есть 110 или 6 (ваш текущий ответ) в денарете.

В C нет оператора экспоненциальности (мощности) . ^ используется побитовым XOR оператором на языке C. Выполнение 5^3 вернет 6 , а не 125 . Для возведения в степень вы можете использовать стандартную библиотечную функцию pow .
Подпись:

 double pow(double x, double y); 

Заголовок:

 #include  

+ Изменить

 printf("%d", 5^3); 

в

 printf("%d",(int)pow(5,3)); 

В C ++ не используйте . Вместо этого вы можете использовать .

Другие уже рекомендовали использовать функцию pow из math.h потому что ^ не является правильным оператором для выполнения мощности. В качестве альтернативы вы также можете написать свою собственную функцию питания только для удовольствия.

 int power(int base, int exp) { int result = 1; while(exp) { result = result * base; exp--; } return result; в int power(int base, int exp) { int result = 1; while(exp) { result = result * base; exp--; } return result; 

Внутри основного:

 printf("%d\n", power(5,3)); 

В этом случае вам не нужно использовать оператор трансляции, поскольку pow() не работает с int.