1樓:西瓜霜
你的 s=1/n是取整運算吧,1/2的整數部分當然是0了。而且你輸出時浮點型資料,所以s結果是0.00000
2樓:匿名使用者
不能,會自動轉化,將s=1/n,改為s=1.0/n
c語言 不同資料型別間的混合運算
3樓:匿名使用者
c語言裡 不同資料型別間的混合運算會強制轉換的```如6.0/5``結果必然向float型轉換```比如char short型參與運算都是先轉為int型`float轉為double型
int double混合運算時轉為double型都是向著佔用較大的方向轉換``使適用範圍也更大`````書上應該說的比較詳細了 `呵呵`
c語言中不同資料型別的混合運算
4樓:匿名使用者
再回來說下,你可以這樣進行檢測,看隱式轉換的問題還是溢位的問題:
typedef unsigned long long uint64;//最新的編譯器都支援這種用法吧,總之你找個能表示64位的longlong就行了.
//uint
cout << (uint64)iu + (uint)i << endl;
這裡先將i轉換成uint型,此時未溢位,然後加上轉換uint64(iu)的值,再將其提升為uint64,因為原來已經為uint型,所以提升為uint64時值不再改變,最後結果超出了uint的範圍,如果你再對最終結果進行(uint),得到的答案你應該知道了.
------------------
溢位問題.
i=-8,轉化為uint型後,為2^32-8,再加上個uint(10),結果為:
2^32+2,溢位後,結果為2.
你只考慮到一個很大的正數,卻沒有考慮到uint範圍的問題!
c語言中,各類數值型資料間的混合運算的問題。
5樓:匿名使用者
從巨集觀上覆看,這個式子
制可以簡化為a+b+c-d這樣的格式,編譯時bai候差不多是這du樣個過程:
從左向右掃描zhi,先讀入10,再讀入+,接著讀入'a',注意此時不能計算,因為後面可能還有更高階別的運算子(比如10 + 'a' * 20...),接著再讀入一個+,因為這dao個+和前一個+的運算子優先順序一致,並且同級別的+的運算次序是從左向右(例如a+b+c+d,如果不考慮速算或者加法的交換律,這個準確的計算次序一定是((a+b)+c)+d,其他同級別的算術運算子結合性也是一樣的),不管後面的表示式是什麼樣的,這裡的第一個+肯定可以計算出結果出來了,因此先計算出10 +'a'為107
打個比方說:雖然原則上先乘除後加減,如果給定一個很長的混合運算式子,一般而言,大多是人也覺得沒有那麼機械死板地去,那個區域性可以得出結果來,一定會用中間結果去簡化
6樓:匿名使用者
我同意chiconysun的說法,執行的時候從左往右讀入資料和運算子專的到當前操作符的後一屬個運算子為止,比較優先順序來決定運算順序。這是對於混合運算的規則,但我不清楚這是普遍遵循的規則還是和編譯器有關。
用實際程式來驗證:
執行int i, j; //未進行初始化
int x = i + 1 + 3 * j; //關於 i + 1 和 3 * j 哪一項先進行運算
執行時檢測到錯誤「變數 i 未被初始化的情況下被使用」,可以從中看出是 i + 1 先於 3 * j 進行運算。(否則就會報出變數 j 的錯誤資訊。)
7樓:匿名使用者
這是譚浩強的《c程式設計》(第三版)的第54頁裡面寫的。誰知道如何解答呢?謝謝。
關於c語言中各型別資料間的混合運算
8樓:匿名使用者
兩種不同型別的數運算的時候,根據包容性,將低階範圍的轉換成高範圍的,將小的轉換為大的。這樣才能保證結果更正確。比如將單精度轉換成雙精度,將short轉換為long等。
所以,結果是雙精度的。如果結果儲存到單精度的變數,將會有一個warning的編譯警告。
9樓:匿名使用者
這個問題其實是基礎問題。 兩個單精度運算的話,系統部會轉換成雙精度資料再進行運算。而是直接進行運算。
得出的資料結果是單精度。 如果是一單一雙的話,就會報錯。 如果是2個雙精度的話,結果是雙精度
10樓:匿名使用者
樓主記住一個規則就行了:在計算的時候,系統把所有的資料,轉化成本表示式中精度最高的型別。
11樓:匿名使用者
不會轉化,如果是一單一雙系統會自動產生一個雙精度的結果
12樓:淡振梅翟培
intc;c的輸出型別就是整型.沒有其他
如果你想把這弄成double那就
double
c;就行了
順便說下
你少了庫函式
#include
"stdio.h"
c語言各數值型資料間的混合運算的問題
13樓:匿名使用者
我執行的結果也來是a=-12
其實和源型別轉換沒太大關係
可以按bai如下方法解釋
計算du機中求
zhi兩個數的和是dao先求它們補碼的和,再轉換成結果的b(補)=11101000(負數的補碼為原碼(10011000)取反(11100111)加1(11101000))
u(補)=00001010(正數補碼和原碼一致(00001010))c(補)=b(補)+u(補)=11110010c=c(補)加1(11110011)再取反(10001100,即-12)
c語言中不同型別的資料能否進行混合運算?如果能,以何種規則進行?
14樓:小蔥愛石頭
可以,強制復轉換就行,制int('a')就將
baichar 型轉換成int型,還有就是可以利用du一些函zhi
數進行轉換,如itoa()將daoint型轉換成char型,atof()將char型轉換成float型等等,很多這種函式,可以上網查一下
c語言中不同資料型別的資料在運算時採用的規則有哪些?
15樓:匿名使用者
不同資料型別之bai
間的轉換
有du2種方式:隱式轉換和顯zhi式轉換dao。
隱式轉換指的是默
專認做的一些轉換式,比如屬整形和實型做混合運算(這裡我說的運算是合法的運算,不會是取餘這樣對運算元有資料型別要求的運算),得到的結果是自動由精度低的或佔位數低的資料型別向高的資料型別做轉換,也就是上述問題得到的結果是實型。
顯示轉換:指的是使用強制型別轉換運算子來進行強制的結果型別轉換,這是人為的得到想要的型別的一種方法。
你所描述的不同資料型別的資料在運算時,採取的多是隱式轉換。
c語言中不同資料型別的資料在運算時採用的規則有哪些 5
16樓:匿名使用者
不同資料型別之間的轉換有2種方式:隱式轉換和顯式轉換。
隱式轉換指的是預設做的一些轉換式,比如整形和實型做混合運算(這裡我說的運算是合法的運算,不會是取餘這樣對運算元有資料型別要求的運算),得到的結果是自動由精度低的或佔位數低的資料型別向高的資料型別做轉換,也就是上述問題得到的結果是實型。
顯示轉換:指的是使用強制型別轉換運算子來進行強制的結果型別轉換,這是人為的得到想要的型別的一種方法。
你所描述的不同資料型別的資料在運算時,採取的多是隱式轉換。
17樓:匿名使用者
當然是相同大小資料的等位運算了,參見組合語言
18樓:
這個在一般的c語言教程裡面都有介紹的 譚老大的教材裡面說的很清楚
19樓:湯曼華袁秋
1、賦值運算中如果賦值號「=」兩邊的資料型別不同,賦值號右邊的型別轉換為左邊的型別,這種轉換是截斷型的轉換,不會四捨五入。
比如i是整型變數,則i=2.99;結果i的值為2直接捨去
#include
intmain()
測試結果為2.
c語言中資料型別的轉換
include stdio.h main 輸出的資料型別不匹配 給你舉個例子吧 j i 實際j值和i一樣 j i,實際j值比i大一 你還沒明白 i 注意它是在i使用後自動加一printf d i 這是兩句命令,執行完i 後才輸出,i值自然 1 j 它是在使用前加一 printf d j 也是兩句命令...
在C語言中不同的資料型別之間是如何轉換的不同的資料型別是
在c語言中bai,不同資料型別在進du行運算時首zhi先要轉換成同一型別,一dao種是自動轉換,回二是強制轉換,如答 int a 將a強制轉換為int型 轉換原則 箭頭是轉換方向 char,short int unsigned long,float double 說這個題之前要接受一個事實 不同計算...
c語言多種資料型別混合輸入,C語言多種資料型別混合輸入
用字串就輸出了!比如 int main void 這樣輸入的只要是可顯示字元就都能輸出了 c語言中,每一種輸入控制符可以用來輸入哪種資料型別?a,a 讀入一個浮點值 僅c99有效 c 讀入一個字元 d 讀入十進位制整數 i 讀入十進位制,八進位制,十六進位制整數 o 讀入八進位制整數 x,x 讀入十...