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