标题:
看上去不合法的语句,居然能编译并运行成功,结果正确!�
[打印本页]
作者:
GOTOmsdos
时间:
2006-7-28 21:39
标题:
看上去不合法的语句,居然能编译并运行成功,结果正确!�
在 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;
注意!!! 上面的“逗号”(不是分号)!!!
作者:
asbai
时间:
2006-7-29 04:01
逗号怎么啦?C/C++语法中,逗号分割的表达式从左向右求值,完整表达式的值是最右端子表达式的值。
函数调用和赋值都是合法表达式嘛
作者:
electronixtar
时间:
2006-7-29 14:47
逗号表达式
作者:
GOTOmsdos
时间:
2006-7-29 22:51
是,逗号表达式
复习了
欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/)
Powered by Discuz! 2.5