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