先美化一下:
if ( (e<0 ? -e : e ) < 1e-8 )
{ break; }
首先,分清 e 的含義,“e<0”中的 e 是個數,和後面的的“1e-8”中的 e 不是一回事,後面那個代表的是科學計數法,就是10的-8次方。
然後,看裡面括號裡的(e<0 ? -e : e ),這是3元運算表示式,意思是取e的絕對值 |e| (負的取負,正的不變)。
最後,整體含義為:如果 則“break”。
單純看這個 if 語句,這個 break 做不了什麼,所以有人說沒這麼用的,的確是這樣。但很有可能擷取的程式碼片段,比如下面這樣:
for(int i=0;i<100;i++)
{
e = sth(i); // 從這裡取得 e 的值,下面做判斷,當絕對值<10的-8次方就跳出迴圈
}
先美化一下:
if ( (e<0 ? -e : e ) < 1e-8 )
{ break; }
首先,分清 e 的含義,“e<0”中的 e 是個數,和後面的的“1e-8”中的 e 不是一回事,後面那個代表的是科學計數法,就是10的-8次方。
然後,看裡面括號裡的(e<0 ? -e : e ),這是3元運算表示式,意思是取e的絕對值 |e| (負的取負,正的不變)。
最後,整體含義為:如果 則“break”。
單純看這個 if 語句,這個 break 做不了什麼,所以有人說沒這麼用的,的確是這樣。但很有可能擷取的程式碼片段,比如下面這樣:
for(int i=0;i<100;i++)
{
e = sth(i); // 從這裡取得 e 的值,下面做判斷,當絕對值<10的-8次方就跳出迴圈
if ( (e<0 ? -e : e ) < 1e-8 )
{ break; }
}