我是新來的編碼(目前正在學習C++ &我知道一點的C)...errno值不更新(C++)
被閱讀功能math.h中和閱讀有關錯誤號.. 。
據現場我提到: -
域誤差(輸入參數是在其中操作在數學上定義的範圍內,例如標準:: SQRT(-1),標準::日誌外(-1)或std :: acos(2))。如果MATH_ERRNO位被設置,則EDOM被分配給errno。如果MATH_ERREXCEPT位置1,則引發FE_INVALID。
所以我試着用這些知識寫一個小程序...
#include <iostream>
#include <cerrno>
#include <cmath>
using namespace std;
int main (void)
{
errno = 0;
cout<<"\nWhat I get :-\n";
cout << "log(-3) = " << log(-3) << "\n";
//shouldn't it do (errno = EDOM) in the above step?
cout << "errno = " << errno << "\n";
cout << strerror(errno) << "\n";
errno = EDOM;
cout<<"\nWhat I want :-\n";
cout << "log(-3) = " << log(-3) << "\n";
cout << "errno = " << errno << "\n";
cout << strerror(errno) << "\n\n";
return(0);
}
,並在輸出我看到的errno是沒有得到我的第一個塊更新爲益登即使是-3不是在日誌()的域...
輸出: -
What I get :-
log(-3) = nan
errno = 0
Undefined error: 0
What I want :-
log(-3) = nan
errno = 33
Numerical argument out of domain
我不明白我在這裏失蹤... Plz幫助....
我在Mac上編譯Apple LLVM 7.3.0版(clang-703.0.31)上的代碼。
'的std :: ends'無厘頭與普通文本流。除非你需要額外的東西,否則不要使用'std :: endl'。 ''\ n''結束一行。 –