c语言整行乘非整形等于什么意思,C语言--整形升级寻常算术转换
【三個概念】
1.表達式:
由運算符、變量和常量組成的具有一個確定結果(值)的一個式子。
-->算術表達式:如 x + 5 * y
-->關系表達式:如 x >= 5, x == 8
-->邏輯表達式:與、或、非,&& || ~
-->賦值表達式:如 x = y +7
-->條件表達式:如 x > y ? 1 : 0
-->逗號表達式:有逗號運算符的表達式
求解表達式:①混合運算規則;②優先級規則;③ 結合性規則。
2.語句:
指的是當程序運行時執行某個動作的語法結構。它改變變量的值,產生輸出,或處理輸入。C語言包括4類語句:
-->表達式語句:末尾加上分號,expression;如,函數調用語句和賦值語句
-->語句塊:由大括號{}括起來的一系列語句
-->空語句:只有一個分號
-->控制語句:3類,循環語句,選擇/條件語句,特殊語句(return,continue,break)
3.算術運算:
二元算術運算符:加減乘除取模,+ - / * %
一元算術運算符: + -,強調數的正負
【整形升級】
也稱類型提升,是指:
char, shaort int或者int型位段(bit-field),包括它們的有符號或無符號變型,以及枚舉類型,可以使用在int或unsigned int的[!表達式!]]中。
如果int可以完整表示源類型的所有值,那么該源類型的值就轉換為int,否則轉換為unsigned int。
【尋常算術轉換】
當執行[!算術運算!]時,操作數的類型如果不同,就會發生轉換。
規則:
①若其中一個是long double類型,另一個也被轉換成long double;
②若其中一個是double類型,另一個也被轉換成double;
③若其中一個是float類型,另一個也被轉換成float。
若不滿足上述三條,則兩個數進行整型升級:
①若其中一個是unsigned long int類型,另一個也被轉換成unsigned long int;
②若其中一個是long int類型,另一個是unsigned int,
如果long int能夠完整表示unsigned int的所有值,那么unsigned int轉換為long int,
如果long int不能夠完全表示unsigned int所有值,那么兩個操作數都被轉換成unsigned int。
③若其中一個是 long int 類型,另一個也被轉換成long doublelong int;
④若其中一個是 unsigned int 類型,另一個也被轉換成unsigned int;
⑤若以上四條都不滿足,則兩個數都轉換成 int。
【K&R C和ANSI C區別】
K&R C:無符號保留原則,當一個無符號類型與int或更小的整型混合使用時,結果類型是無符號類型。
ANSI C:值保留原則,操作數類型不同就進行轉換,朝著浮點精度更高,長度更長的方向轉換。
【總結】
通常情況下,在對int類型的數值作運算時,CPU的運算速度是最快的。在x86上,32位算術運算的速度比16位算術運算的速度快一倍。
C語言是一個注重效率的語言,所以它會作整型提升,使得程序的運行速度盡可能地快。
因此,你必須記住整型提升規則,以免發生一些整型溢出的問題。
總結
以上是生活随笔為你收集整理的c语言整行乘非整形等于什么意思,C语言--整形升级寻常算术转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老福特怎么成为高级粉丝?
- 下一篇: 买保险,最重要的是看懂保险责任和免责条款