准备C语言进阶,看了一些关于C语言的书籍,今天是C陷阱与缺陷(阿里巴巴 腾讯实习生笔试都没过。)
1.C语言词法分析中的大嘴法。
每一个符号应该包含尽可能多的字符。也就是说,编译器将程序分解成符号的方法是,从左到右一个字符一个字符的读入,如果该字符可能祖曾一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分;如果可能,继续读入下一个字符,重复上述判断,知道读入的字符组成的字符串已经不再可能组成一个有意义的符号。
a---b等同于 a-- - b
y = x /* p出错,本来想除以指针p所指向的数值,结果被注释掉了。改成 y = x / *p就可以了。
还有一个例子,在经典书籍C陷阱与缺陷中是一道课后题。
原题如下:某些C编译器语序嵌套注释。请写一个测试程序,要求:无论是对允许嵌套注释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常通过编译)—无错误消息出现),但是这两种情况下执行程序的结果却不相同。
很明显在程序中要写出代码,体现嵌套与非嵌套的区别。
/*/*"*/"*/1 如果是嵌套注释,则输出结