Hàm fesetenv được định nghĩa trong tệp tiêu đề .

Nguyên mẫu fesetenv

int fesetenv( fenv_t* envp );

Hàm fesetenv cố gắng thiết lập môi trường dấu phẩy động từ đối tượng được trỏ tới envp. Giá trị của envp phải được lấy trước đó bằng lệnh gọi đến feholdexcept hoặc fegetenv hoặc là hằng số macro dấu phẩy động.

Thông số fesetenv

  • envp: Con trỏ tới một đối tượng kiểu fenv_t lưu trạng thái của môi trường dấu phẩy động.

Giá trị trả về fesetenv

  • Khi thành công, hàm fesetenv trả về 0.
  • Khi thất bại, nó trả về nonzero.

Ví dụ: Hàm fesetenv hoạt động như thế nào?

#include <iostream>
#include <cmath>
#include <cfenv>
#pragma STDC FENV_ACCESS ON
using namespace std;

void print_exceptions
{
	cout << "Raised exceptions: ";
	if(fetestexcept(FE_ALL_EXCEPT))
	{
		if(fetestexcept(FE_DIVBYZERO))
			cout << "FE_DIVBYZERO ";
		if(fetestexcept(FE_INEXACT))
			cout << "FE_INEXACT ";
		if(fetestexcept(FE_INVALID))
			cout << "FE_INVALID ";
		if(fetestexcept(FE_OVERFLOW))
			cout << "FE_OVERFLOW ";
		if(fetestexcept(FE_UNDERFLOW))
			cout << "FE_UNDERFLOW ";
	}
	else
		cout << "None";

	cout << endl;
}

void print_current_rounding_direction
{
	cout << "Current rounding method: ";
	switch (fegetround) {
		case FE_TONEAREST:
			cout << "FE_TONEAREST";
			break;
		case FE_DOWNWARD:
			cout << "FE_DOWNWARD";
			break;
		case FE_UPWARD:
			cout << "FE_UPWARD";
			break;
		case FE_TOWARDZERO:
			cout << "FE_TOWARDZERO";
			break;
		default:
			cout << "unknown";
	};
	cout << endl;
}

void print_environment
{
	print_exceptions;
	print_current_rounding_direction;
}

int main(void)
{
	cout << "Initial environment " << endl;
	print_environment;
	fenv_t envp;

	/* Save current environment */
	fegetenv(&envp);
	feraiseexcept(FE_INVALID|FE_DIVBYZERO);
	fesetround(FE_DOWNWARD);
	cout << "After changing environment " << endl;
	print_environment;

	/* Restores previous environment */
	fesetenv(&envp);
	cout << "Restoring initial environment " << endl;
	print_environment;
	return 0;
}

Khi bạn chạy chương trình, kết quả đầu ra sẽ là:

Initial environment
Raised exceptions: None
Current rounding method: FE_TONEAREST
After changing environment
Raised exceptions: FE_DIVBYZERO FE_INVALID
Current rounding method: FE_DOWNWARD
Restoring initial environment
Raised exceptions: None
Current rounding method: FE_TONEAREST

Chúng tôi hy vọng rằng bài viết này bao gồm tất cả các phương pháp cho C ++ fesetenv (): Nguyên mẫu, Tham số, Giá trị trả về và Ví dụ [Detail]. Nếu bạn thấy bài viết này thực sự hữu ích với bạn, hãy chia sẻ thông tin này đến bạn bè, người thân, gia đình và những người khác của bạn. Hẹn gặp lại các bạn trong những bài viết tiếp theo với fixsy.org!