Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
Lihat juga
Dukungan matematika dan titik mengambang
_control87, , _controlfp__control87_2
_status87, , _statusfp_statusfp2