c语言中,为什么声明的变量名不可以是关键字呢? 例如:声明一个名为char的整数: int char;

c语言为什么要这么设计
选上这么高,没有水准的答案就别来了。。。
实际上,据我所知,几乎所有程序设计语言都不允许将关键字(Keyword)作为变察昌量名(ID)。
从编译原理的角度来说,如果允许这样做,那么在词法分析森粗阶段就不能确定当前Token的具体类型,因为char 可能是一个Keyword也可能是一个ID,就只有推迟到语法分析阶段来确定类型。

这样就引入了完全不必要的败春扒复杂性,而且没有任何实际的意义,有时可能还会陷入无法判断的窘境。
int char; //顷陆如果这个可以的话,数消下面这个表示什么意思?是不是雀毕顷有二义性了?
char *p; //这个是表示char乘p呢,还是表示定义指什变量呢?
当编绎的时候遇到int char 就是一条路,如果你又把它作为一个变量又是另一条路,就相镇弯历当于是你走路的时候遇到十字路口,你闹基知道该往哪边走御搜呢?
你这个问题nb呀,哈哈,如果那样做会让系统无法识别。