![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-01 21:04 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,249 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » 看上去不合法的语句,居然能编译并运行成功,结果正确! |
| 可打印版本 1,564 / 3 |
| 第1楼 GOTOmsdos | 发表于 2006-07-28 21:39 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
看上去不合法的语句,居然能编译并运行成功,结果正确! 在 GNU 的GZIP 的源码,在TC2上,编译通过
#define FLUSH_BLOCK(eof) \ flush_block(block_start >= 0L ? (char*)&window[(unsigned)block_start] : \ (char*)NULL, (long)strstart - block_start, (eof)) 有了上面的宏定义,后面就有如下的感觉违反规定的语句! if (flush) FLUSH_BLOCK(0), block_start = strstart; 注意!!! 上面的“逗号”(不是分号)!!! |
|
| 第2楼 asbai | 发表于 2006-07-29 04:01 |
| 高级用户 发帖 252 积分 653 | |
|
逗号怎么啦?C/C++语法中,逗号分割的表达式从左向右求值,完整表达式的值是最右端子表达式的值。
函数调用和赋值都是合法表达式嘛 ![]() |
|
| 第3楼 electronixtar | 发表于 2006-07-29 14:47 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
逗号表达式
|
|
| 第4楼 GOTOmsdos | 发表于 2006-07-29 22:51 |
| 铂金会员 发帖 1,827 积分 5,154 | |
|
是,逗号表达式
复习了 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |