_clear87
, _clearfp
Mendapatkan dan menghapus kata status floating-point.
Sintaks
unsigned int _clear87( void );
unsigned int _clearfp( void );
Nilai hasil
Bit dalam nilai yang dikembalikan menunjukkan status floating-point sebelum panggilan ke _clear87
atau _clearfp
. Untuk definisi lengkap bit yang dikembalikan oleh _clear87
, lihat Float.h. Banyak fungsi pustaka matematika memodifikasi kata status 8087/80287, dengan hasil yang tidak dapat diprediksi. Mengembalikan nilai dari _clear87
dan _status87
menjadi lebih andal karena lebih sedikit operasi floating-point dilakukan antara status kata status floating-point yang diketahui.
Keterangan
Fungsi _clear87
menghapus bendera pengecualian dalam kata status floating-point, mengatur bit sibuk ke 0, dan mengembalikan kata status. Kata status floating-point adalah kombinasi dari kata status 8087/80287 dan kondisi lain yang terdeteksi oleh handler pengecualian 8087/80287, seperti luapan tumpukan floating-point dan underflow.
_clearfp
adalah versi _clear87
rutinitas yang independen dan portabel platform. Ini identik dengan _clear87
platform Intel (x86) dan juga didukung oleh platform x64 dan ARM. Untuk memastikan bahwa kode floating-point Anda portabel ke x64 dan ARM, gunakan _clearfp
. Jika Anda hanya menargetkan platform x86, Anda dapat menggunakan _clear87
atau _clearfp
.
Fungsi-fungsi ini tidak digunakan lagi saat mengkompilasi dengan /clr (Common Language Runtime Compilation) karena runtime bahasa umum hanya mendukung presisi floating-point default.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
_clear87 |
<float.h> |
_clearfp |
<float.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// crt_clear87.c
// compile with: /Od
// This program creates various floating-point
// problems, then uses _clear87 to report on these problems.
// Compile this program with Optimizations disabled (/Od).
// Otherwise the optimizer will remove the code associated with
// the unused floating-point values.
//
#include <stdio.h>
#include <float.h>
int main( void )
{
double a = 1e-40, b;
float x, y;
printf( "Status: %.4x - clear\n", _clear87() );
// Store into y is inexact and underflows:
y = a;
printf( "Status: %.4x - inexact, underflow\n", _clear87() );
// y is denormal:
b = y;
printf( "Status: %.4x - denormal\n", _clear87() );
}
Status: 0000 - clear
Status: 0003 - inexact, underflow
Status: 80000 - denormal
Baca juga
Dukungan matematika dan titik mengambang
_control87
, _controlfp
, __control87_2
_status87
, _statusfp
, _statusfp2
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk