比如我们写int char这些是不是就是编译器的语法和规则什么的,规则规定int就是整数 char就是字符等等,我们必须按照这个标准去写?如果我要是写个zhengshu a=0代表整数型 是不是编译器就不认识了吧?
我们写代码时候都是在文本里写的,那如果在文本里写int a=0 ,此时此刻这里的0在文本里还代表的不是数值0本身?但是等到编译器翻译转换的时候会把字符0转成数值0的?这些都是人为规定的,在设计编译器的时候提前设定好的标准?
不同的语法就有不同的编译器,进行不同语法的分析?
那是不是所有编译器都把源代码编译成汇编的语法规则代码,然后在通过汇编编译器把编译成汇编的代码在编译成机器码?
就好比c语言编译器把C语言源代码先编译成汇编规则的代码,然后汇编编译器在把汇编规则的代码编译成机器码?
int char 不是编译器的语法和规则,而是编程语言的数据类型规则
明白了,int char是说是编程语言里的数据类型语法规则,跟编译器没关系,编译器只负按数据类型规则翻译是吧?
嗯,是的,就像汉语的名词、动词、句子似的,这是语言的定义,数值的是int,单字符是char。
编译器只是根据语言的规则来执行。
那int char 等等是不是语法规则?
我要写个zhengshu a=0编译器是不是不认识?
关键字是语法规则的一部分。
你写的zhengshu,编译器是无法识别的,因为语法规则中没有定义,编译器无法识别它是关键字,只会将它按普通的字符串处理。
但如果你用c的宏#define zhengshu int或者typedef int zhengshu;,再使用zhengshu,因为按
c的语法规则,#define定义的是别名,编译器会自动将zhengshu替换为int。