#include<stdio.h>
#include<math.h>
#define LOWERLIMIT 5
#define UPPERLIMIT 30
在C中定義(#define)常量是否表示沒有數據類型的值?C中定義(#define)常量是否表示沒有數據類型的值?
#include<stdio.h>
#include<math.h>
#define LOWERLIMIT 5
#define UPPERLIMIT 30
在C中定義(#define)常量是否表示沒有數據類型的值?C中定義(#define)常量是否表示沒有數據類型的值?
#define
只是預處理程序用來執行簡單文本替換的指令。而關於你的情況:
#define LOWERLIMIT 5
#define UPPERLIMIT 30
兩個宏定義擴大到無任何後綴的整數文字,因此,有效的宏表示與int
類型常量。
它們是預處理指令,它們只是替換文本,例如LOWERLIMIT與其他東西,例如5.他們沒有這種「類型」。 – Caw
之前的預處理器是一個在編譯器之前運行的獨立程序,它對於宏等的處理是一個簡單的搜索替換。每次它看到例如'LOWERLIMIT'輸入輸出'5'。編譯器從來沒有看到'LOWERLIMIT'只有整數字面值'5'。 –
'LOWERLIMIT'等不是常數。它們是插入常量的宏。 '5'等是C中的常量。除了_enum-constants_(它們總是'int',btw),C中沒有符號常量。「 – Olaf