Trong C ++ Kết quả của pow (0, 0) kết quả là về cơ bản thực hiện hành vi được xác định kể từ toán học chúng ta có một tình huống mâu thuẫn nơi N^0
nên luôn luôn có 1
nhưng 0^N
nên luôn luôn 0
cho N > 0
, vì vậy bạn sẽ không có kỳ vọng toán học như là kết quả của việc này một trong hai. Bài đăng trên diễn đàn Wolfram Alpha này đi vào chi tiết hơn một chút.
Mặc dù pow(0,0)
kết quả 1
là hữu ích cho nhiều ứng dụng như Cơ sở lý luận cho Tiêu chuẩn Quốc tế — Ngôn ngữ Lập trình — C nêu trong phần bao gồm hỗ trợ số học dấu phẩy động IEC 60559 :
Nói chung, C99 tránh kết quả NaN trong đó giá trị số là hữu ích. [...] Kết quả của pow (∞, 0) và pow (0,0) đều là 1, vì có những ứng dụng có thể khai thác định nghĩa này. Ví dụ: nếu x (p) và y (p) là bất kỳ hàm giải tích nào trở thành 0 tại p = a, thì pow (x, y), bằng exp (y * log (x)), tiếp cận 1 khi p tiếp cận a.
Cập nhật C ++
Như leemes chỉ ra một cách chính xác tôi ban đầu liên quan đến tài liệu tham khảo cho phức tạp phiên bản của pow trong khi không phức tạp tuyên bố phiên bản đó là lỗi miền các tiêu chuẩn dự thảo C ++ rơi trở lại với tiêu chuẩn dự thảo C và cả C99 và C11 trong phần 7.12.7.4
Các chức năng pow đoạn 2 nói ( nhấn mạnh của tôi ):
[...] Lỗi miền có thể xảy ra nếu x bằng 0 và y bằng không. [...]
mà theo như tôi có thể nói có nghĩa là hành vi này là hành vi không xác định Xoay lại một chút phần 7.12.1
Xử lý điều kiện lỗi cho biết:
[...] lỗi miền xảy ra nếu đối số đầu vào nằm ngoài miền mà hàm toán học được xác định. [...] Đối với lỗi miền, hàm trả về một giá trị do triển khai xác định; nếu biểu thức số nguyên math_errhandling & MATH_ERRNO khác không, biểu thức số nguyên errno nhận giá trị EDOM; [...]
Vì vậy, nếu có lỗi miền thì đây sẽ là hành vi được xác định thực thi nhưng trong cả hai phiên bản mới nhất của gcc
và clang
giá trị của errno
là 0
do đó nó không phải là lỗi miền cho các trình biên dịch đó.
Cập nhật Javascript
Đối với Javascript , Đặc tả ngôn ngữ ECMAScript® trong phần 15.8
Đối tượng toán học dưới 15.8.2.13
pow (x, y) cho biết trong số các điều kiện khác:
Nếu y là +0, kết quả là 1, ngay cả khi x là NaN.