算术类型转换、整型提升
分享一個很有意思的小tip
有人在編寫代碼時運行出了一個讓人摸不著頭腦的結(jié)果:
-20>0U 怎么會是真值呢??
這位朋友還特意檢驗了一下0U的值,當(dāng)然是0沒錯。可是出現(xiàn)這樣的結(jié)果到底是為什么呢?
這就涉及到c語言中的算術(shù)類型轉(zhuǎn)換的問題了:
根據(jù)操作數(shù)的不同,某些運算符會引起操作數(shù)的值從某種類型轉(zhuǎn)換成另一種類型。其效果是將所有操作數(shù)轉(zhuǎn)換為同一公共類型,并以此類型為結(jié)果。
首先,如果任一操作數(shù)為long double類型,則另一操作數(shù)將轉(zhuǎn)換為long double類型.
否則,如果任一操作數(shù)為double類型,則另一操作數(shù)將轉(zhuǎn)換為double類型.
否則,如果任一操作數(shù)為float類型,則另一操作數(shù)將轉(zhuǎn)換為float類型.
否則,同時對這兩個操作數(shù)進行整型提升.
如果任一操作數(shù)為long int類型,另一操作數(shù)為unsigned int類型,此時取決于long int能不能表示完所有unsigned int類型的數(shù)。
如果可以則轉(zhuǎn)換為long int; 如果不可以則將兩個操作數(shù)都轉(zhuǎn)換為unsigned long int類型
否則,如果任一操作數(shù)為long int類型,則另一操作數(shù)將轉(zhuǎn)換為long int類型.
否則,如果任一操作數(shù)為unsigned int類型,則另一操作數(shù)將轉(zhuǎn)換為unsigned int類型.(這也是對上面問題的解答)
否則兩個操作數(shù)都轉(zhuǎn)換為int類型.
總結(jié)
以上是生活随笔為你收集整理的算术类型转换、整型提升的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比特币到底是不是货币?
- 下一篇: Matlab--利用plot函数绘画直线