C語言中的優先級和類型轉換分析


一、優先級

1、易錯的優先級

二、類型轉換

  在C語言中,存在強制類型裝換,也存在隱式類型轉換,隱式類型轉換實際上屬於強制類型轉換,隱式類型轉換要點如圖。

  

  (1)舉例:算術運算式中,低類型轉換為高類型

#include <stdio.h>
void test(void);
void test2(void);
int main()
{
    test2();
    return 0;
}
void test(void)
{
    char c='A';
    short s=0;
    printf("%d\n",sizeof(s)+sizeof(c));  //打印 3
    printf("%d\n",sizeof(s+c));  //打印 4
}
void test2(void)
{
    int i = -2;
    unsigned int j = 1;
    if((i+j)>=0)     //參考C語言中符號的技巧文檔中的隱式優先級轉換, i會先轉換成unsigned int 在再運算。 
    {
        printf("i+j>=0\n");  //打印它 
    }
    else
    {
        printf("i+j<0\n");
    }
    //參考 "深入理解計算機系統(原書第三版3)P85(49)" 
    //以帶符號的10進制形式輸出整數 
    printf("i+j=%d\n", i + j);   //這里會打印-1,但是這個-1並不是一個負數,而是無符號數4294967295的補碼。 
    //以不帶符號的10進制形式輸出整數
    printf("i+j=%u\n", i + j);  //這里會打印4294967295 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM