『壹』 取余不是兩邊只能為整形嗎 求大神解答!
「取余不是兩邊只能為整形嗎」
編譯器的默認類型轉換,你去好好看書了解一下。當類型不同時,編譯器會在後台promote轉換成統一類型再進行運算的。
『貳』 C語言中,一個整型對一個浮點型取余是怎樣運算的
由於C中提供的取模(%)是用來求兩個整數相除的余數,所以不存在一個整數使用%對浮點數取余數,系統編譯不過。要計算一個整數對浮點數取余數,可以使用fmod函數,代碼如下,
#include <stdio.h>
#include <math.h>
//輸出4對0.3取余的結果
int main(int argc, char *argv[])
{
printf("%d\n",7%1/2);//由於%和/優先順序相同,從左向右執行,7%1為0,0/2為0
printf("%lf\n",fmod(4,0.3));//輸出0.100000
return 0;
}
double fmod( double x, double y );函數返回參數x/y的余數,需要添加math.h頭文件。
『叄』 C語言。取余運算符 %兩邊的數字類型相同就行還是必須都是整型
必須是整形。
除法運算符「/」。二元運算符,具有左結合性。參與運算的量均為整型時,結果為整型,捨去小數。如果運算量中有一個為實型,結果為雙精度實型。
例如:
5/2=2,1/2=0
5/2.0=2.5
(3)取余對整形擴展閱讀
求余運算符「%」,二元運算符,具有左結合性。參與運算的量均為整型。求余運算的結果等於兩個數相除後的余數。
例如:
5%2=1,1%2=1
5%2.0和5.0%2的結果是語法錯誤
轉:當前面的數小於後面的數時
其實求余運算可以看成
a%b=a-(int)(a/b)*b
1%2=1
2%5=2
a%b
如果a<b的話,這樣的商為0,余數就是a。
『肆』 c語言中取余運算符兩邊可以不是整型嗎回答詳細點。。。謝謝
這要看你的編譯器環境支持什麼樣的標准,在c語言的c99標准中,為整數除法規定了「趨零截尾」的規則。按照這個規則,如第一個操作數為負,那麼得到的模也為負;如第一個操作數為正,那麼結果也為正。例:3
%
2結果是1,3
%
-2
結果是1,-3
%
-2結果是-1,-3
%
2結果是-1。如果你得到不同的結果,說明你的編譯器實現不完全支持c99標准。
『伍』 求余運算符 只適用於整形與字元型數據; 求余的兩個操作數只適用於整形數;這兩個不矛盾嘛
在計算機中,字元型數據是按照整數進行運算的(不過其表示的范圍為0到255),所以求余運算可以使用整數和字元型數據。
希望能幫到你。
『陸』 【C語言,%取余兩邊都要是整型嗎】
不可以,取余運算符只是針對整形數來說的,你學的數學里邊不是整數可以取余嗎?而且c語言就這樣規定的。
『柒』 C語言中求余的結果是否要為整型
不一定,浮點型數也可以
『捌』 %取余的操作對象只能是整形,那10.7%3是不是不能算呀
在少部分編譯器和特殊編譯配置下,10.7%3會被強制轉換為整數後做取余數運算,相當於:
(int)10.7%3
得到整數結果。
大部分編譯器會直接報錯,%不能對浮點數運算。
如果你希望得到小數結果,只能自己做一個函數或語句段來完成:
doublea=10.7,b=3;
while(a>=b)
a-=b;
『玖』 求大數對整數取余演算法的原理
所謂求余不就是除法得到余數的過程,這個程序的演算法其實跟我們手動除法的過程是一樣的,想想我們怎麼筆算的?
舉個例子來說,4147 /3
最高位開始,4/3=1,還餘1,然後借位給低位,下一位是1,加上高一位的借位就是1×10+1=11,
11/3=3,還餘2,繼續借位給下一位=4+2×10=24,24/3=8,恰好除斷,最後一位就沒有借位了,就是7/3=2,還餘1,最後得到的余數就是4147 /3的余數
你程序中對大數求余的過程,不就是模擬我們筆算除法的過程嘛!