免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: OwnWaterloo

[C] VLA(variable length array)该如何翻译? 召唤英语帝、 ISO党 [复制链接]

论坛徽章:
0
发表于 2010-12-24 11:33 |显示全部楼层
看了之后我觉得应该翻译成可变长度数组,因为没有规定表示数组长度一定是变量,而是非常量表达式。
int a[m];可以认为m是个变量,但如果是int a[m+1]; m+1不能当作变量吧,只能说表达式的值是可变的,所以变量长度数组我认为会给人造成误解,认为只能用变量作为长度,这点还是变长数组更适合。

论坛徽章:
0
发表于 2010-12-24 11:34 |显示全部楼层
本帖最后由 davelv 于 2010-12-24 11:43 编辑
C89要求定义数组时,数组的尺寸必须是整数类型常量表达式
C99则可以是变量
实际上这种数组的尺寸并不是可 ...
KBTiller 发表于 2010-12-22 22:30


sizeof()对VLA运算的时候,是属于运行时计算,这点ISO手册也有提及,也就是说,长度可变。
当然在对象的生命周期内是长度固定的,但这点无论是翻译成变长数组还是翻译成变量长度数组,都可能会引起歧义,都要提及的,或者提前统一说明:C语言任何类型的对象的长度(sizeof)在对象的生命周期内大小不变(不知道我这句话对不对,大家可以挑刺)。

6.5.3.4 The sizeof operator

2.The sizeof operator yields the size (in bytes) of its operand, which may be an
expression or the parenthesized name of a type. The size is determined from the type of
the operand. The result is an integer. If the type of the operand is a variable length array
type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an
integer constant.

论坛徽章:
0
发表于 2010-12-24 11:42 |显示全部楼层
回复 32# davelv

我觉得
数组在定义时确定尺寸
以后尺寸就固定了
这一点两者是一样的
只不过VLA的空间是在运行时才确定的
但一旦确定就不可以再改变了
基于这个理由我不赞成用可变数组,这很容易让人以为这个数组的尺寸可以多次改变

论坛徽章:
0
发表于 2010-12-24 11:46 |显示全部楼层
回复 33# KBTiller
KBTiller兄回复帖子的时候我整好在编辑帖子,可以看我编辑后的内容。对象在其生命周期内不可变,这是需要提示的。
翻译成变量长度数组,难道大家就不能理解成生命周期内长度可变么?在语义上这么理解完全说得过去。

论坛徽章:
0
发表于 2010-12-24 12:45 |显示全部楼层
回复  KBTiller
对象在其生命周期内不可变,这是需要提示的。
davelv 发表于 2010-12-24 11:46


这个同意您的看法


回复  KBTiller
翻译成变量长度数组,难道大家就不能理解成生命周期内长度可变么?在语义上这么理解完全说得过去。
davelv 发表于 2010-12-24 11:46


在语义上我认为那个“variable”是名词

论坛徽章:
0
发表于 2010-12-24 13:06 |显示全部楼层
这个同意您的看法




在语义上我认为那个“variable”是名词
KBTiller 发表于 2010-12-24 12:45


但是很明显,VLA的意思不只是把变量作为长度,而是可变值的表达式。如果翻译成“变量”,该“变量”和C语言中的变量也不是一回事,这就更需要提示+说明了。
最常见的是 形容词+名字的修饰方法,名词修饰名词的词组比较少见,尤其是当把variable length array三个都作为名词的情况更是罕见。

论坛徽章:
0
发表于 2010-12-24 13:13 |显示全部楼层
回复 36# davelv


    懂您的意思了.看来目前我们都无法说服对方
    我们不妨再听听其他网友的看法吧

论坛徽章:
0
发表于 2010-12-24 13:21 |显示全部楼层
回复 37# KBTiller
很多问题深入探讨就会引起分歧,就像上次说的那个多级指针一样。但是只要把意思解释清楚,随着信息的反复完善和筛选,这也分歧慢慢就消失了。
那咱们就等高人来提出精辟的解释吧

论坛徽章:
0
发表于 2010-12-24 13:23 |显示全部楼层
回复 38# davelv


    呵呵,目前我方人数占优(虽然这不足以说明对错)

论坛徽章:
0
发表于 2010-12-24 15:43 |显示全部楼层
变量长度数组,简称 变长数组。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP