c編譯器對標識符進行解析
❶ 1、c語言合法標識符:輸入一個字元串,判斷其是否是C的合法標識符
#include <ctype.h>
#include <stdio.h>int main(void)
{
int n, d, i;
char sym[64]; scanf("%d%*c", &n);
while (n--)
{
gets(sym);
if (sym[0] != '_' && !isalpha(sym[0]))
{
puts("no");
continue;
}
for (d = i = 1 ; sym[i] ; i++)
{
if (!isalnum(sym[i]) && sym[i] != '_')
{
d = 0;
break;
}
}
puts(d ? "yes" : "no");
} return 0;
}
❷ c語言中的標識符分幾類
C語言中的標識符分為三類:
一、關鍵字
關鍵字是用來標識文件中各個記錄的特定數據項目的值。
關鍵字是電腦語言里事先定義的,有特別意義的標識符,有時又叫保留字。
二、預定義標識符
預定義標識符是C語言中標識符兩種中的一種,在C語言中有特定的含義。
如函數「printf」是「格式輸出」的英語全稱加縮寫。
三、用戶標識符
每個C語言中的字要麼歸為關鍵字,要麼歸為標識符。而標識符分為預定義標識符和用戶標識符。
預定義標識符是C語言中系統預先定義的標識符,如系統類庫名、系統常量名、系統函數名。
預定義標識符具有見字明義的特點,如函數「格式輸出」(英語全稱加縮寫:printf)、「格式輸入」(英語全稱加縮寫:scanf)、sin、isalnum等等。
預定義標識符可以作為用戶標識符使用,只是這樣會失去系統規定的原意,使用不當還會使程序出錯。
(2)c編譯器對標識符進行解析擴展閱讀:
C語言:
C語言中把標識符分為三類:關鍵字,預定義標識符,用戶自定義標識符
1、標識符由字母(A-Z,a-z)、數字(0-9)、下劃線「_」組成,並且首字元不能是數字,但可以是字母或者下劃線。例如,正確的標識符:abc,a1,prog_to。
2、不能把C語言關鍵字作為用戶標識符,例如if ,for, while等.
3、標識符長度是由機器上的編譯系統決定的,一般的限制為8字元(註:8字元長度限制是C89標准,C99標准已經擴充長度,其實大部分工業標准都更長)。
4、標識符對大小寫敏感,即嚴格區分大小寫。一般對變數名用小寫,符號常量命名用大寫。
5、標識符命名應做到「見名知意」,例如,長度(length),求和、總計(sum),圓周率(pi)……
❸ C語言中的標識符問題
變數名不能以數字開頭,直接選D。 int_2 肯定是合法的, 並沒有與關鍵字相同。數字也沒在最前,下劃線符號也是可以使用的
❹ c語言中標識符是什麼
c語言中標識符是由字母(A-Z,a-z)、數字(0-9)、下劃線「_」組成,並且首字元不能是數字,但可以是字母或者下劃線。例如,正確的標識符:abc,a1,prog_to。C語言中把標識符分為三類:關鍵字,預定義標識符,用戶自定義標識符。
標示符(IDentifier)是指用來標識某個實體的一個符號。在不同的應用環境下有不同的含義。在編程語言中,標識符就是程序員自己規定的具有特定含義的詞,比如類名稱,屬性名稱,變數名等。標識符可能是字、編號、字母、符號,也可能是由上述元素所組成。
❺ C語言的按照標識符、關鍵字、常用編譯指令有哪些
我們可以在C源程序中插入傳給編譯程序的各中指令,這些指令被稱為預處理器指令,它們擴充了程序設計的環境。現把常用的預處理命令總結如下:
1. 預處理程序
按照ANSI標準的定義,預處理程序應該處理以下指令:
#if #ifdef #ifndef #else #elif
#endif
#define
#undef
#line
#error
#pragma
#include
顯然,上述所有的12個預處理指令都以符號#開始,,每條預處理指令必須獨佔一行。
2. #define
#define指令定義一個標識符和一個串(也就是字元集),在源程序中發現該標識符時,都用該串替換之。這種標識符稱為宏名字,相應的替換稱為宏代換。一般形式如下:
#define macro-name char-sequence
這種語句不用分號結尾。宏名字和串之間可以有多個空白符,但串開始後只能以新行終止。
例如:我們使用LEFT代表1,用RIGHT代表0,我們使用兩個#define指令:
#define LEFT 1
#define RIGHT 0
每當在源程序中遇到LEFT或RIGHT時,編譯程序都用1或0替換。
定義一個宏名字之後,可以在其他宏定義中使用,例如:
#define ONE 1
#define TWO ONE+ONE
#define THREE ONE+TWO
宏代換就是用相關的串替代標識符。因此,如果希望定義一條標准錯誤信息時,可以如下定義:
#define ERROR_MS 「Standard error on input \n」
如果一個串長於一行,可在行尾用反斜線」\」續行,如下:
#define LONG_STRING 「This is a very very long \
String that is used as an example」
3. #error
#error指令強制編譯程序停止編譯,它主要用於程序調試。#error指令的一般形式是:
#error error-message
注意,宏串error-message不用雙引號包圍。遇到#error指令時,錯誤信息被顯示,可能同時還顯示編譯程序作者預先定義的其他內容。
4. #include
程序中的#include指令要求編譯程序讀入另一個源文件。被讀入文件的名字必須用雙引號(「」)或一對尖括弧(<>)包圍,例如:
#include 「stdio.h」
#include <stdio.h>
都使C編譯程序讀入並編譯頭文件以用於I/O系統庫函數。
包含文件中可以包含其他#include指令,稱為嵌套包含。允許的最大嵌套深度隨編譯器而變。
文件名被雙括弧或尖括弧包圍決定了對指定文件的搜索方式。文件名被尖括弧包圍時,搜索按編譯程序作者的定義進行,一般用於搜索某些專門放置包含文件的特殊目錄。當文件名被雙括弧包圍時,搜索按編譯程序實時的規定進行,一般搜索當前目錄。如未發現,再按尖括弧包圍時的辦法重新搜索一次。
通常,絕大多數程序員使用尖括弧包圍標準的頭文件,雙引號用於包圍與當前程序相關的文件名。
5. 條件編譯指令
若干編譯指令允許程序員有選擇的編譯程序源代碼的不同部分,這種過程稱為條件編譯。
5.1#if、#else、#elif #endif
條件編譯指令中最常用的或許是#if,#else,#elif和#endif。這些指令允許程序員根據常數表達式的結果有條件的包圍部分代碼。
#if的一般形式是:
#if constant-expression
Statement sequence
#endif
如#if後的常數表達式為真,則#if和#endif中間的代碼被編譯,否則忽略該代碼段。#endif標記#if塊的結束。
#else指令的作用與C語言的else相似,#if指令失敗時它可以作為備選指令。例如:
#include <stdio.h>
#define MAX 100
Int main(void)
{
#if MAX>99
printf(「Compiled for array greater than 99.\n」);
#else
printf(「Complied for small array.\n」);
#endif
return 0;
}
❻ C++ 編譯器怎樣對標識符進行解析
它是一個字元一個字元地讀入,之後在讀到認為不再是標識符時,再判斷前面讀進來的所有字元組成的字元串是不是標識符
❼ 求C語言標識符詳解
下劃線,字母,數字
不能以數字開頭
自定義的不能和保留字相同
就這三條,還有就是編譯器對標識符有長度限制
❽ 如何用C語言編寫識別標識符程序
這里有圖有步驟有代碼。 http://www.docin.com/p-207935186.html
❾ 編譯原理:c語言標識符的正則表達式
C語言中的標識符:
標識符由字母、數字、下劃線「_」組成,並且首字母不能是數字.
java語言中的標識符:
標識符由字母、數字、下劃線「_」、美元符號「$」組成,並且首字母不能是數字。
一般標識符由字母、數字、下劃線「_」組成
如果只能以下劃線、英文字母開頭,後跟單詞字元的話:
^[A-Za-z_][A-Za-z0-9_]*$