2. 词法"陷阱"

1. 练习2-1

某些编译器允许嵌套注释。请写一个程序测试,要求:无论是对允许嵌套注释的编译器,还是对不允许嵌套注释的编译器,该程序都能正常通过编译,但是这两者情况下执行的结果却不相同。

#include<cstdio>
#include<cstring>
using namespace std;


int  main(void){
    char c[] = "bufsize /* is 8 bytes" " but len is */ 7 len";
    printf("%s", c);
    return 0;
}

不允许嵌套(已测试):
    bufsize /* is 8 bytes but len is */ 7 len
允许嵌套(根据书中内容解释后得到的):
    bufsize  7 len

2. 练习2-3

为什么n-->0的含义是 n-- >0,而不是 n- -> 0

n-->0根据贪心法则在遇到>之时已被解释为n--,故最终被解释为n-- > 0。

3. 练习3-4

a+++++b的含义是什么?

由于后置++运算符优先级高于前置++运算符,所以可以解释为(a++)+++b,由于a++之后的结果不能作为左值使用所以后面的只能与b结合形成:(a++)+(++b)。

 

 

posted @ 2019-12-09 19:18  楓羽  阅读(156)  评论(0编辑  收藏  举报