⑴ c語言中的#define是什麼意思,有什麼作用,怎樣用
#define 定義一個標識符來表示一個常量。
其特點是定義的標識符不佔內存,只是一個臨時的符號,預編譯後這個符號就不存在了。
用 #define 定義標識符的一般形式為:
#define 標識符 常量 //注意, 最後沒有分號
#define 和 #include 一樣,也是以「#」開頭的。凡是以「#」開頭的均為預處理指令,#define也不例外。
(1)c語言預測指令擴展閱讀:
宏定義 #define 一般都寫在函數外面,與 #include 寫在一起。當然,寫在函數裡面也沒有語法錯誤,但通常不那麼寫。#define 的作用域為自 #define 那一行起到源程序結束。如果要終止其作用域可以使用 #undef 命令。
使用宏定義可以用宏代替一個在程序中經常使用的常量。注意,是「經常」使用的。這樣,當需要改變這個常量的值時,就不需要對整個程序一個一個進行修改,只需修改宏定義中的常量即可。
且當常量比較長時,使用宏就可以用較短的有意義的標識符來代替它,這樣編程的時候就會更方便,不容易出錯。因此,宏定義的優點就是方便和易於維護。
⑵ c語言 出現的#if 0 表示什麼
c語言 出現的#if 0 是預編譯指令,表示之後的代碼不執行。
C語言中預編譯指令#if、#else和#endif指令一般配合使用。#if 後面的參數為真(非0)則執行#if 後面的模塊。#if 後面的參數為假,則不執行#if 後面的模塊。
此指令多用在調試的時候,有段代碼不想刪除,怕後面用到所以用 #if 0 來暫時注釋掉,如果想用的話就用#if 1 來開啟;例如: #if true 執行 #endif #if false 跳過 #endif。
(2)c語言預測指令擴展閱讀:
常見的預編譯指令有:
一、#include 指令
該指令指示編譯器將xxx.xxx文件的全部內容插入此處。若用<>括起文件則在系統的INCLUDE目錄中尋找文件,若用" "括起文件則在當前目錄中尋找文件。一般來說,該文件是後綴名為"h"或"hpp"的頭文件。
二、#define指令有三種用法:
1、第一種是定義標識,標識有效范圍為本翻譯單元本指令之後,形如#define XXX,常與#if配合使用;
2、第二種是定義常數,如#define max 100,則max代表100;
3、第三種是定義"函數",如#define get_max(a, b) ((a)>(b)?(a):(b)) 則以後使用get_max(x,y)就可以得到x和y中較大的數(這種方法存在一些弊病,見注2)。
⑶ 關於C語言預處理命令
第一句有問題。
比如
#ifndef WIN32
#endif printf("OK\n");
在這里,這個printf就不會被執行。也就是說, 一行中, 只能有一條預處理指令,
當編譯的預處理階段, 編譯器識別了一條完整的預處理指令後,後面的所有東西他都不要了。
對於第二句,在函數里,我們是可以使用預處理指令的。
比如
void fun(void)
{
#ifdef WIN32
... // 對於windows系統環境的操作
#else
... // 對於windows以外的系統環境的操作
#endif /* WIN32 */
...
}
樓上的同學, 你是在哪兒本書上看的? 介紹一下唄
⑷ c語言中if和while 有什麼區別
區別:
一、if和while共同點是都有判斷。
二、if和while不同點是,if後的語句只執行一次,while則會循環執行,直到出現while後的條件成才退出。
三、語法不同:
1、IF(logical_test,value_if_true,value_if_false)
2、while<條件>do<語句>
意為當條件符合時,接著做下面的語句;不符合時,退出循環。
四、功能不同:
1、IF函數是條件判斷函數:如果指定條件的計算結果為TRUE,IF函數將返回某個值;如果該條件的計算結果為FALSE,則返回另一個值。
例如IF(測試條件,結果1,結果2),即如果滿足「測試條件」則顯示「結果1」,如果不滿足「測試條件」則顯示「結果2」。
2、while循環也被稱為「當」型循環。即當條件為真時,執行循環體中。在R語言中,while循環的語法格式如下:while(cond){expr}其中,cond是一個邏輯條件表達式,其值應為TRUE或FALSE;expr是循環體中的語句,即當cond條件為TRUE時要執行的表達式或若干語句。
例如:
1、if用來做條件判斷
if用來做條件判斷,與else搭配使用。在if條件判斷中,若邏輯條件表達式為真,則運行語句或語句塊;如果邏輯條件表達式為假,則跳過語句;
例如,超過五點下班走人,否則就繼續上班。在這里&ldquo;時間&rdquo;就是判斷條件,時間就是下班或者上班只要時間超過五點,即判斷條件為真,則執行的事件就是下班,else語句不再執行,即不再執行上班語句;只要事件沒有超過五點,則執行上班語句。
2、while是循環語句
在C語言中通常用while來表示循環,例如在main()函數中一般都用while(1)來讓主程序循環執行。即在邏輯條件表達式為真的情況下,while反復執行循環體內包含的語句或語句塊,直到條件不成立。
例如:天氣如果是下雨就執行睡覺指令,直到不下雨為止;如陰天、晴天或者下雪等其他天氣就不執行睡覺指令。
4、if語句叫做選擇語句,一般和else一起使用。判斷條件是否成立,成立則執行if後面的分支,不成立則執行else後面的分支。執行完畢則轉入下條語句。
while語句叫做循環語句。同樣是判斷條件是否成立。但是執行完畢後繼續判斷該條件,直到該條件不成立則轉入下一條語句。
對於一個假條件,兩者的執行情況是一致的。對於一個真條件,執行完畢後if語句就順序執行下一條,while還要繼續判斷和執行。這就是兩者的不同吧。
對於while語句,必須要在執行語句中設置改變判斷條件結果的語句或者設置跳出語句以避免陷入死循環。
⑸ C語言中很多的預處理指令include、define等等它們各自的意義分別是什麼
include的作用: #include叫做「文件包含」 / include 語句包含並運行指定文件。 功能:它的功能是用來指定文件的全部內容替換程序中的命令行,從而使指定的文件與當前源文件連成一個源文件 書寫格式: #include <文件名> //表示編譯系統根據系統頭文件存放的目錄路徑去搜索系統頭文件,而不是在源文件目錄去查找 #include "文件名" //表示編譯系統首先在當前的源文件目錄中查找,若未找到才根據系統的頭文件存放的目錄路徑去搜索系統頭文件 //系統定義的頭文件通常使用尖括弧;用戶自定義的頭文件通常使用雙引號。 //一般來說,如果為調用庫函數而用#include命令來包含相關的頭文件,則用尖括弧,以節約查找時間。 //如果要包含的是用戶自己編寫的文件(這種文件一般都在用戶當前的目錄中),一般用雙撇號。 //若文件不在當前目錄中,在雙撇號內應該給出文件路徑(如#include"C:\wang\file2.h") ----------------- 1.#define 的作用 在C或C++語言源程序中允許用一個標識符來表示一個字元串,稱為「宏」。被定義為「宏」的標識符稱為「宏名」。在編譯預處理時,對程序中所有出現的「宏名」,都用宏定義中的字元串去代換,這稱為「宏代換」或「宏展開」。宏定義是由源程序中的宏定義命令完成的。宏代換是由預處理程序自動完成的。 在C或C++語言中,「宏」分為有參數和無參數兩種。 2. 無參宏定義 無參宏的宏名後不帶參數。 其定義的一般形式為: #define 標識符 字元串 其中的「#」表示這是一條預處理命令。凡是以「#」開頭的均為預處理命令。「define」為宏定義命令。「標識符」為所定義的宏名。「字元串」可以是常數、表達式、格式串等。 例如: #define M (a+b) 它的作用是指定標識符M來代替表達式(a+b)。在編寫源程序時,所有的(a+b)都可由M代替,而對源程序作編譯時,將先由預處理程序進行宏代換,即用(a+b)表達式去置換所有的宏名M,然後再進行編譯。 程序1: #define M (a+b) main(){ int s,y; printf("input a number: "); scanf("%d",&y); s=M*M; printf("s=%d\n",s); } 上常式序中首先進行宏定義,定義M來替代表達式(a+b),在 s= M * M 中作了宏調用。在預處理時經宏展開後該語句變為: S=(a+b)*(a+b) 但要注意的是,在宏定義中表達式(a+b)兩邊的括弧不能少。否則會發生錯誤。 如當作以下定義後:#difine M (a)+(b) 在宏展開時將得到下述語句:S= (a)+(b)*(a)+(b) 對於宏定義還要說明以下幾點: 1. 宏定義是用宏名來表示一個字元串,在宏展開時又以該字元串取代宏名,這只是一種簡單的代換,字元串中可以含任何字元,可以是常數,也可以是表達式,預處理程序對它不作任何檢查。如有錯誤,只能在編譯已被宏展開後的源程序時發現。 2. 宏定義不是說明或語句,在行末不必加分號,如加上分號則連分號也一起置換。 3. 宏定義必須寫在函數之外,其作用域為宏定義命令起到源程序結束。如要終止其作用域可使用#undef命令。 3. 帶參宏定義 c語言允許宏帶有參數。在宏定義中的參數稱為形式參數,在宏調用中的參數稱為實際參數。對帶參數的宏,在調用中,不僅要宏展開,而且要用實參去代換形參。 帶參宏定義的一般形式為: #define 宏名(形參表) 字元串 在字元串中含有各個形參。 帶參宏調用的一般形式為: 宏名(形參表) 例如: #define M(y) ((y)*(y)+3*(y)) /*宏定義*/ .... k=M(5); /*宏調用*/ .... 在宏調用時,用實參5去代替形參y,經預處理宏展開後的語句為: k=5*5+3*5 程序2: #define MAX(a,b) (a>b)?a:b main(){ int x,y,max; printf("input two numbers: "); scanf("%d%d",&x,&y); max=MAX(x,y); printf("max=%d\n",max); } 上常式序的第一行進行帶參宏定義,用宏名MAX表示條件表達式(a>b)?a:b,形參a,b均出現在條件表達式中。程序第七行max=MAX(x,y)為宏調用,實參x,y,將代換形參a,b。宏展開後該語句為: max=(x>y)?x:y; 用於計算x,y中的大數。