1樓:
浮點一般都是不可重入的:
對於定點的計算機體系,浮點運算語句,編譯後,會是很長一段機器指令序列,若涉及到全域性的浮點變數,必然不能在一條指令完成,導致不可重入。
對於具有浮點運算能力的計算機體系,涉及到的全域性浮點變數運算,有可能一條浮點運算指令完成,則是可重入,否則不可重入。另外,若os對於浮點暫存器在程序切換或中斷響應時不儲存,肯定不重入。
printf()經常有重入和效能上的問題:
先解釋重入的問題:printf()函式與硬體相關,硬體埠相當於全域性變數,函式內部的全域性變數,導致該函式不可重入。效能上的問題:
對於併發或同時執行的多程序或任務,若要正確使用printf()函式,必須互斥使用,在乙個程序或任務執行printf ()時,其他使用printf()的程序或任務只能等待,不能及時顯示。
2樓:匿名使用者
重入一般可以理解為乙個函式在同時多次呼叫,例如作業系統在程序排程過程中,或者微控制器、處理器等的中斷的時候會發生重入的現象。
一般浮點運算都是由專門的硬體來完成,舉個例子假設有個硬體暫存器名字叫做float,用來計算和存放浮點數的中間運算結果
假設有這麼個函式
void fun()
假如第一次執行,有個對浮點數操作運算的結果臨時存在float暫存器中,而就在這時被中斷了,而中斷函式或者另乙個程序也呼叫fun函式,這時第二次呼叫的fun函式在執行的過程中就會破壞第一次float暫存器中的結果,這樣當返回到第一次fun函式的時候,結果就不正確了。
可以把fun函式理解為printf()函式。
c需要中的列印浮點數,printf("%3.2f",123.455)其中3代表什麼?那2呢?
3樓:匿名使用者
3表示字串總長度,包括小數點和尾數。
2表示小數尾數長度。
當不足長度時會自動擴充,預設右對齊左邊補充空格。
printf("%7.2f",123.455f); // 正確的長度應該是7
printf("%8.2f",123.455f); // 長度不足8,所以左邊補乙個空格
printf("%-8.2f",123.455f); // 左對齊,所以右邊有乙個空格
printf("%7.2lf",123.455lf); // 指定輸入的字串是(double)型別,按照(long double)8位元組解釋
// 數字後面的f,lf分別表示這是乙個float或者double型別的數
// 建議手動指定型別以防止編譯器解釋錯誤
// gcc和vc解釋的結果就不一樣
4樓:匿名使用者
輸出浮點型數值,2代表輸出兩位小數,3嘛,好像是3個整數?不記得了
以下程式的執行結果是( )。 void main() { int n=8; switch(n--) { default: printf("%d ",n++); case 8:
5樓:匿名使用者
c 7因為switch(n--),n是後自減,所以先使用n後再自減(即先用8進行選擇後減為7)
所以程式跳過default 與case 8配對,由於沒有break程式往下執行case 6輸出n 即為7
c語言int相除如何得浮點出來
6樓:吉祥二進位制
可以通過強制資料型別轉換運算子()來實現。
示例**如下:
#include
int main()
執行結果:
7樓:斯卡保羅技術
被這個類似的問題困擾過:同意樓上 iamdebugman的說法,強制轉化被除數與除數,即
float t = (float) (k1) / (float)(k2);
另外一位同學的 int k1=5;
int k2=2;
float k;
k=(float)k1/k2; 結果應該是2
8樓:_鈊_煩_薏亂
必須進行型別轉換,否則無法得到2.5
因為int型,不可能搞出小數點來。
當然可以通過另外使用函式的方法來解決這個問題。但是不是多此舉麼?
你這個情況轉化成float之後再int回來值是不變的。
9樓:匿名使用者
這個很簡單,
int k1 = 5;
int k2 = 2;
float t = k1 /(float) k2 ;//強制轉換也可以int k1 = 5;
int k2 = 2;
float t = (float)k1 / k2 ;也可以改為float t = (float)k1 /(float) k2 ;
都是可以的,這個強制轉換並沒有改變你的兩個int型別,就是說k1 k2還是個int 型
10樓:匿名使用者
int k1 = 5;
int k2 = 2;
float t = (float)k1 / float(k2) ;
就可以了,就是在運算前將它們轉化
11樓:匿名使用者
把k1和k2中的乙個定義為float就可以了
12樓:智趣派
int k1 = 5;
int k2 = 2;
float t = k1*1.0 / k2 ;
給k1或者k2隨便乙個乘以1.0就行~~~
13樓:天天無知
強制轉換一下就可以了!
main()
這一段怎麼理解?請舉個例子,這句話如何理解,舉個例子說明
事物發展的普遍規律,對與錯,如社會的進步,蒸汽時代無疑是人類動力上的一大步,但現在看來頗多弊端 我國許多馬克思主義哲學原理教科書 在談到否定之否定過程時 常用 兩次否定三個階段 來加以概括 認為事物的辯證發展 是從肯定階段開始 經過第一次否定進入否定之否定階段 完成事物發展的乙個週期.筆者認為 這種...
聽到這個噩耗,真好似晴天霹靂一般,這句話什麼作用?
發生不好事,就可以用來這句話形容。猛的聽到這個噩耗真好像晴天霹靂一般,這句話的作用是起到強調的作用,突出我無法接受這個訊息。猛地聽到這個噩耗,真好似晴天霹靂一般。這個句子運用了什麼修辭手法?比喻比喻是一種常用的修辭手法,用跟甲事物有相似之點的乙事物來描寫或說明甲事物,是修辭學的辭格之一。也叫 譬喻 ...
父母總說「一碗水端不平」,你如何理解這句話呢
有機生活倡導者 一碗水這句話的字面意思就是 父母對於孩子可能有乙個偏心或者是有一點重男輕女,或者是對於兩個孩子不平等這樣的現象。所以孩子的心理才會有覺得,一碗水端不平的心理。關於這一點,其實有時候父母可能給兩個孩子的都一樣,但是孩子的需求不同,他就覺得父母不能滿足自己。所以就覺得父母是一碗水端不平,...