中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 19:45
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 看上去不合法的语句,居然能编译并运行成功,结果正确! 查看 1,563 回复 3
楼 主 看上去不合法的语句,居然能编译并运行成功,结果正确! 发表于 2006-07-28 21:39 ·  中国 广东 广州 教育网
铂金会员
★★★★
C++启程者
积分 5,154
发帖 1,827
注册 2003-07-18 00:00
23年会员
UID 7105
性别 男
状态 离线
在 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 发表于 2006-07-29 04:01 ·  中国 上海 虹口区 电信
高级用户
★★
积分 653
发帖 252
注册 2006-04-16 19:48
20年会员
UID 53939
状态 离线
逗号怎么啦?C/C++语法中,逗号分割的表达式从左向右求值,完整表达式的值是最右端子表达式的值。

函数调用和赋值都是合法表达式嘛

3 发表于 2006-07-29 14:47 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
逗号表达式

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
4 发表于 2006-07-29 22:51 ·  中国 广东 广州 教育网
铂金会员
★★★★
C++启程者
积分 5,154
发帖 1,827
注册 2003-07-18 00:00
23年会员
UID 7105
性别 男
状态 离线
是,逗号表达式
复习了
论坛跳转: