- 注册时间
- 2009-2-12
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 23496
- 在线时间
- 小时
|
发表于 2024-6-15 20:37:21
|
显示全部楼层
楼上说的有道理, 主要是词法分析。是一元运算符的解析。
大概逻辑就是 从左往右开始,缓存一个历史字符进行判断,如果连续两个字符相同,视为一个 双字符的一元运算符,即自增,自减,于是紧随着的下一个必须是可以修改的左值表达式(不是就报错)。如果紧挨着的是不同的字符,视为 两个 单字符的一元运算符。
- #include <iostream>
- int main()
- {
- int i=4;
- // std::cout << --+i <<","<<i<< std::endl;
- // std::cout << ---i <<","<<i<< std::endl;
- // std::cout << ++-i <<","<<i<< std::endl;
- // std::cout << +++i <<","<<i<< std::endl;
- std::cout << -++i <<","<<i<< std::endl;
- std::cout << -+-i <<","<<i<< std::endl;
- std::cout << +--i <<","<<i<< std::endl;
- std::cout << +-+i <<","<<i<< std::endl;
- std::cout << -+-+-+i <<","<<i<< std::endl;
- return 0;
- }
复制代码
如上,注释掉的是不合法的。
。 |
|