首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c陷阱与缺陷中的一道题,该怎么处理

2012-03-11 
c陷阱与缺陷中的一道题练习2-1.C语言允许初始化列表中出现多余的逗号,例如intdays[]{31,28,31,30,}为什

c陷阱与缺陷中的一道题
练习2-1.   C语言允许初始化列表中出现多余的逗号,例如

int   days[]   =   {   31,   28,   31,   30,   };
为什么这种特性是有用的?

??

[解决办法]
LZ莫非也玩KZ??
[解决办法]
编译器处理起来方便。

[解决办法]
数组,枚举等末尾加逗号,可以避免在追加元素的时候出错,这是一个很好的编程习惯。
[解决办法]
days[] 数组长度未知,数足内后面的逗号可以理解为,其后元素为0...
[解决办法]
好象不用这么理解的吧,Ls的,days[]数组长度虽然末知,可c语言允许灵活性数组。


fengdream(Be an early vegetable bird~~~) :
days[] 数组长度未知,数足内后面的逗号可以理解为,其后元素为0...
????
[解决办法]
这个就需要编写编译器的开发人员作解答了。

不过我想,在编译器一行一行的读代码的时候,
当读到了初始化数组变量的时候,遇到一个‘{’ 然后就是初始值了,一个‘,’代表着一个初始值的结束,这样可以简化编译器的相关的部分的函数的处理复杂度。

仅此而已吧, 个人认为。
[解决办法]
记得某本书(不是《C专家编程》就是《程序设计实践》)评论过这个东西,说是为了方便机械化生成的代码的初始化数组,并简化编译器的末端处理;但又评论说这个理由比较牵强,因为在C语言中这种语法并不具有一致性,因为同样是列表像函数参数列表什么的就没这种用法。

不过spofmy所说的“很好的编程习惯”,倒真的不一定。我见到多数的评论还是反对手工写出这种代码的。

注:如果是用机器写代码,可以简单地写循环是:
fprintf(fp, "a = { \n ");
for (i = 0; i < 100; ++i)
printf( "%d, ", data[i]);
printf( "};\n ");
而不必为最后一个数据多写一行特殊处理的代码。

热点排行