[C/C++知識點] 數字後面加U/L/F的含義

本文章向大家介紹[C/C++知識點] 數字後面加U/L/F的含義,主要包括[C/C++知識點] 數字後面加U/L/F的含義使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。

一、引言
       寫代碼的時候往往需要定義許多常量,如int num=5等等,這個數字5顯然是(默認的)signed int類型;而unsigned int num=5,此時的數字5顯然是unsigned int類型。
       現在我們定義一個宏變量#define NUM 5,這個數字5是以什麼類型存儲的呢?答案是signed int。我們再這樣定義一個宏變量#define NUM 5LL,此時的數字5又是以什麼類型存儲的呢?答案是signed long long。

二、解釋
代碼裏會經常看到在一個數字後面加上U、L、F等符號,這表示什麼意思呢?
首先說明下每個符號代表的意義:
1、數據類型
空白:默認爲有符號整型,相當於signed int。
U(u):表示該常數用無符號整型方式存儲,相當於unsigned int。
L(l):表示該常數用有符號長整型方式存儲,相當於signed long。
LL(ll):表示該常數用有符號長長整型方式存儲,相當於signed long long。
UL(ul):表示該常數用無符號長整型方式存儲,相當於unsigned int。
ULL(ull):表示該常數用無符號長長整型方式存儲,相當於unsigned int。
F(f):表示該常數用浮點方式存儲,相當於float。

2、進制
空白:默認爲10進制。
B(b):2進制(僅彙編裏使用,C代碼裏禁止使用,如1101B)。
H(h):16進制(僅彙編裏使用,C代碼裏禁止使用,如1A2H)。

數字前面加0:8進制。
數字前面加0x:16進制

三、舉例

#include "stdio.h"
 
#define NUM1 5
#define NUM2 5U
#define NUM3 5L
#define NUM4 5LL
#define NUM5 5UL
#define NUM6 5ULL
#define NUM7 5.0F
// #define NUM 5F  /* 注意這種方式會編譯出錯,提示在整型常量後不正確使用了F */ 

int main()
{
    int num1 = 5;       /* 默認10進制數5 */
    int num2 = 0576;    /* 8進制數576 */
    int num3 = 0x56B3;  /* 16進制數56B3 */
    
    // int num = 1101B;   /* 2進制數1101,不是10進制數1101。但這種表示方法是彙編裏的,TC會編譯不過 */
    // int num = 1A5H;    /* 16進制數1A5。這種表示方法是彙編裏的,TC會編譯不過 */
    
    /* 打印各類型所佔字節數 */
    printf("\n各類型所佔字節數:\n");
    printf("5:   %d\n", sizeof(NUM1));
    printf("5U:  %d\n", sizeof(NUM2));
    printf("5L:  %d\n", sizeof(NUM3));
    printf("5LL: %d\n", sizeof(NUM4));
    printf("5UL: %d\n", sizeof(NUM5));
    printf("5ULL:%d\n", sizeof(NUM6));
    printf("5F:  %d\n", sizeof(NUM7));
    
    /* C語言未提供打印2進制的格式化符 */
    
    /* 以8進制打印出num1、num2、num3 */
    printf("\n8進制打印:\n"); 
    printf("0%o\n", num1);
    printf("0%o\n", num2);
    printf("0%o\n", num3);
    
    /* 以10進制打印出num1、num2、num3 */
    printf("\n10進制打印:\n");
    printf("%d\n", num1);
    printf("%d\n", num2);
    printf("%d\n", num3);
    
    /* 以16進制打印出num1、num2、num3 */
    printf("\n16進制打印:\n");
    printf("0x%x\n", num1);
    printf("0x%x\n", num2);
    printf("0x%x\n", num3);
    
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章