导航:首页 > 源码编译 > 编译器字符是关键还是变量

编译器字符是关键还是变量

发布时间:2022-01-22 20:10:32

A. c中的标识符 和 关键字 都是什么啊

标识符就是名字的意思,比如关键字的名字,变量的名字,等等,一个单独的字串。

关键字是编译器定义的标识符,比如int define for if 之类的

B. c与c++语言编译器是如何识别关键字

根据编译器的不同,有不同的识别方式,例如VC6.0使用系统内建关键字列表,如果用户定义变量的时候使用了系统默认的关键字,则会在编译的时候产生错误。

附上:
C语言的关键字共有32个,根据关键字的作用,可分其为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类。

1 数据类型关键字(12个):
(1) char :声明字符型变量或函数
(2) double :声明双精度变量或函数
(3) enum :声明枚举类型
(4) float:声明浮点型变量或函数
(5) int: 声明整型变量或函数
(6) long :声明长整型变量或函数
(7) short :声明短整型变量或函数
(8) signed:声明有符号类型变量或函数
(9) struct:声明结构体变量或函数
(10) union:声明联合数据类型
(11) unsigned:声明无符号类型变量或函数
(12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)

(2)控制语句关键字(12个):
A循环语句
(1) for:一种循环语句(可意会不可言传)
(2) do :循环语句的循环体
(3) while :循环语句的循环条件
(4) break:跳出当前循环
(5) continue:结束当前循环,开始下一轮循环
B条件语句
(1)if: 条件语句
(2)else :条件语句否定分支(与 if 连用)
(3)goto:无条件跳转语句
C开关语句
(1)switch :用于开关语句
(2)case:开关语句分支
(3)default:开关语句中的“其他”分支
D
return :子程序返回语句(可以带参数,也看不带参数)

3 存储类型关键字(4个)
(1)auto :声明自动变量 一般不使用
(2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)
(3)register:声明积存器变量
(4)static :声明静态变量

4 其它关键字(4个):
(1)const :声明只读变量
(2)sizeof:计算数据类型长度
(3)typedef:用以给数据类型取别名(当然还有其他作用
(4)volatile:说明变量在程序执行中可被隐含地改变

C. c/c++ 编译器如何区分char[] 与 char*

1、本身 char [] 和char * 就是不同的符号 编译器自然能识别 。
2、你说的是符号表吧。 符号表主要是给链接器用的。
3、关键你要理解C/C++程序的存储分布。
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于

数据结构中的栈。
2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据

结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态

变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统

释放。
4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放。
5、程序代码区
这是一个前辈写的,非常详细
//main.cpp
int a=0; //全局初始化区
char *p1; //全局未初始化区
main()
{
int b;栈
char s[]="abc"; //栈
char *p2; //栈
char *p3="123456"; //123456\0在常量区,p3在栈上。
static int c=0; //全局(静态)初始化区
p1 = (char*)malloc(10);
p2 = (char*)malloc(20); //分配得来得10和20字节的区域就在堆区。
strcpy(p1,"123456"); //123456\0放在常量区,编译器可能会将它与p3所向"123456"优化成一个地方。
}

stack:
由系统自动分配。例如,声明在函数中一个局部变量int b;系统自动在栈中为b开辟空间
heap:
需要程序员自己申请,并指明大小,在c中malloc函数
如p1=(char*)malloc(10);
在C++中用new运算符
如p2=(char*)malloc(10);
但是注意p1、p2本身是在栈中的。

D. C语言中变量名试是以字符表的方式由编译器处理的 在运行时没有变量名这个东西

nonono,虽然还没学编译原理,不过编译原理没那么简单,我猜,你的标识符在编译器看来就是一个,比如,变量。然后他把所有的标识符对应到一个字符表中,而不管你具体用的哪几个字母。而你举的例子和编译器的处理没什么关系。就是,i就是字符表对应的一个东西的值,&i是字符表对应的一个东西的地址,不能混用。
当然都是猜的。

E. 在C语言中,用关键字什么定义字符型变量

在C语言中,用关键字char定义字符型变量。

char用于C或C++中定义字符型变量,只占一个字节,取值范围为 -128 ~ +127(-2^7~2^7-1)。C语言中如int、long、short等不指定signed或unsigned时都默认为signed,但char在标准中不指定为signed或unsigned,编译器可以编译为带符号的,也可以编译为不带符号的。

(5)编译器字符是关键还是变量扩展阅读:

关于char还有一个特殊的语言就是char *,它在C/C++中有专门的语义,既不同于signed char *,也不同于unsigned char *,专门用于指以''为结束的字符串。

整型和字符型是互通的,他们是在内存中存储的本质是相同的,只是存储的范围不同而已,整型可以是2字节,4字节,8字节,而字符型只占1字节。char类型占1字节,就是8位,所能存储的正整数是 0111 1111,即127。如果将 int 型的整数i= 128 赋予ch,会产生溢出。

F. 如何修改C编译器 我们能不能修改或者设计一个编译器,让它的关键字或者是变量名可以是汉字

你这种想法很强大....貌似易语言,就是中文的....C是外国人创的,这个我不太清楚,但java的变量名是可以用中文的,但关键字就不行了...

G. 编译器如何识别字符是关键字还是变量名的

编译过程大概分这么几步
首先用有限状态自动机把代码文本分割成一个一个的token,每个token是一个意义单位,
比如
int main(123);
就被分割成了
int
main

123


然后对token列表根据该语言的语法建立语法树,在建立语法树的过程中就要区分某个单词是关键字还是标识符(也就是变量名),一般来讲编译器一般都有一个保留字列表,开始的时候都当作变量名看待,如果发现某个变量名出现在了保留字列表里,就对其进行标识处理。

H. 编译器怎么知道是全局变量还是局部变量

这个要细说,能说的很详细,我说一下,比较好理解的你就懂了!
我说之前先打个比方:小区人家,几十户,每家每户都有灯光自己用就是局部的
月亮..全局的.都能用懂了?
按照目前的面向对象来说如Java,C++,C#,Ruby中,由于变量都是封装在类里面的,对别的类不可见,所以已经几乎完全抛弃了全局变量的概念。然而,可以通过把一个类定义为public static,把类成员变量也定义为public static,使该变量在内存中占用固定、唯一的一块空间,来实现全局变量的功能。
说通俗点,你如果想理解,就假如在一个类中,看你定义的变量,位置!类中,方法外面,就属于全局,每个方法都能拿去用..方法里面定义的,就属于局部的,只能他自己用.懂了?
和你一样初学者,不足之处还请指点!

I. 哪个关键字告诉编译器确定变量的数据类型

数据类型
可以理解为固定内存大小的别名

J. 编译器怎么区分标识符和字符

首先要清楚标识符和字符的定义

举例子就是 class string

举例子就是 1,2,3,abc

然后要强调,编译器是无法区分标识符和字符的,只有人事先为其规定好规则的情况下,编译器才会按照标识符的方式去读取。打个比方,我规定了class为类标识符,那当我程序里 出现了class test时,编译器就会认为test是类而不是字符。不知道能不能理解,不过是个好问题

阅读全文

与编译器字符是关键还是变量相关的资料

热点内容
android图片变灰 浏览:268
linuxvi下一个 浏览:973
安卓手机的应用锁怎么解 浏览:735
linux增加路径 浏览:849
sql身份证号最后四位加密 浏览:533
xp系统表格加密 浏览:856
光遇安卓军大衣什么时候上线 浏览:840
android应用商店图标 浏览:341
java计算圆的面积 浏览:643
应用编译优化recovery 浏览:577
域控命令n 浏览:258
php导出文件 浏览:13
谷歌地图网页版无法连接服务器地址 浏览:298
菜鸟工具在线编译python 浏览:858
栅格化命令有何作用 浏览:825
为什么压缩文件不能解压 浏览:311
足球app哪个软件好 浏览:96
产品经理逼疯程序员的一天 浏览:17
修改svn服务器ip地址 浏览:584
下列关于编译说法正确的是 浏览:246