Operator Kuasa ^ Penyalahgunaan: Mengapa Ia Tidak Meninggikan?
Dalam coretan kod C yang diberikan:
#include <stdio.h> void main(void) { int a; int result; int sum = 0; printf("Enter a number: "); scanf("%d", &a); for (int i = 1; i <= 4; i++) { result = a ^ i; sum += result; } printf("%d\n", sum); }
pengendali ^, biasanya digunakan sebagai XOR bitwise, bertujuan untuk digantikan dengan fungsi pow() untuk mengira eksponen. Walau bagaimanapun, kod tersebut gagal menghasilkan kuasa yang diharapkan walaupun menggunakan operator ^.
Memahami ^ Operator
Operator ^ dalam C/C terutamanya melakukan XOR bitwise operasi, yang mengecualikan sebarang tafsiran mengenainya sebagai pengendali kuasa. Oleh itu, adalah tidak sesuai untuk mengira eksponen.
Penyelesaian: Menggunakan Fungsi pow() Dengan Betul
Untuk menangani isu dan meningkatkan nombor kepada kuasa, seseorang mesti menggunakan fungsi pow(). Walau bagaimanapun, cabaran pemutus muncul apabila menggunakan fungsi pow(). Khususnya, menghantar salah satu argumen untuk menggandakan menyelesaikan masalah:
result = (int) pow((double) a, i);
Selain itu, menghantar hasil ke int adalah perlu, kerana fungsi pow() mengembalikan nilai berganda secara lalai.
Variasi C Moden
C99 dan seterusnya memperkenalkan fungsi terapung dan berganda panjang yang dinamakan powf dan powl, masing-masing. Pembangun boleh memanfaatkan fungsi ini sebagai alternatif kepada menghantar hujah dan hasil.
Atas ialah kandungan terperinci Mengapa Operator C ^ Tidak Berfungsi untuk Eksponen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!