2016-08-05 16 views
0
#include<stdio.h> 
#include<math.h> 
#define LOWERLIMIT 5 
#define UPPERLIMIT 30 

在C中定義(#define)常量是否表示沒有數據類型的值?C中定義(#define)常量是否表示沒有數據類型的值?

+1

它們是預處理指令,它們只是替換文本,例如LOWERLIMIT與其他東西,例如5.他們沒有這種「類型」。 – Caw

+1

之前的預處理器是一個在編譯器之前運行的獨立程序,它對於宏等的處理是一個簡單的搜索替換。每次它看到例如'LOWERLIMIT'輸入輸出'5'。編譯器從來沒有看到'LOWERLIMIT'只有整數字面值'5'。 –

+0

'LOWERLIMIT'等不是常數。它們是插入常量的宏。 '5'等是C中的常量。除了_enum-constants_(它們總是'int',btw),C中沒有符號常量。「 – Olaf

回答

0

#define只是預處理程序用來執行簡單文本替換的指令。而關於你的情況:

#define LOWERLIMIT 5 
#define UPPERLIMIT 30 

兩個宏定義擴大到無任何後綴的整數文字,因此,有效的宏表示與int類型常量。

+0

」你的宏表示類型爲int的常量「除非它們被賦值給另一個變量鍵入,就像一個字符? – Caw

+1

@iwin問題是關於我們在宏擴展之後得到的表達式的類型,而不是關於任何額外操作的結果。 – Sergio

+0

'5'等是根據標準的整數**常量** _。只有_string **文字** _。類型不僅由後綴決定,而且由值決定。 (關於顯示的值確實是'int')的一致意見) – Olaf

相關問題