免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wwwsq
打印 上一主题 下一主题

531,继续抽某昏昏 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2012-05-31 12:00 |只看该作者
发现楼主再次强调了一下“老谭只是不严谨”,
那我再问楼主一次

自增运算符(++)和自减运算符(--)只能用于变量,而不能用于常量或表达式
这只是不严谨?

论坛徽章:
0
42 [报告]
发表于 2012-05-31 12:15 |只看该作者
sacry 发表于 2012-05-31 12:00
发现楼主再次强调了一下“老谭只是不严谨”,
那我再问楼主一次



你对何谓“变量”,何谓“表达式”,也混淆了概念。

“表达式的运算结果”有可能是个“anonymous variable”,这个“anonymous variable”是可以进行++运算的。

老谭不严谨的地方在于,anonymous variable在c标准里面并没有规定。那么anonymous variable到底算不算variable呢?这就是不严谨了。

但是expression和variable绝对不是一回事。这是完全不同的基础概念。

论坛徽章:
0
43 [报告]
发表于 2012-05-31 12:37 |只看该作者
本帖最后由 wwwsq 于 2012-05-31 13:04 编辑
sacry 发表于 2012-05-31 12:00
发现楼主再次强调了一下“老谭只是不严谨”,
那我再问楼主一次



这么说吧,你和昏昏都没抓住问题在哪里。

老谭的问题是在于“只能用于变量”,这个叙述是不严谨的。因为++运算符也可以用于anonymous variable,而anonymous variable是个未明确定义的概念,很难说算不算variable。

老谭说的“不能用于表达式”,是非常正确,也非常严谨的。否则就分不清“表达式”和“表达式的运算结果”了。


论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
44 [报告]
发表于 2012-05-31 12:47 |只看该作者
本帖最后由 starwing83 于 2012-05-31 12:52 编辑

回复 43# wwwsq


    求教一下,标准里面有variable这个概念么?C99里面和variable有关的概念我只找到这么几个:

variable arguments, 6.10.3, 7.15
variable arguments header, 7.15
variable length array, 6.7.5, 6.7.5.2
variably modified type, 6.7.5, 6.7.5.2


倒是C++11定义了啥叫variable:
6
Avariable is introduced by the declaration of a reference other than a non-static data member or of an
object. The variable’s name denotes the reference or object.

论坛徽章:
0
45 [报告]
发表于 2012-05-31 12:52 |只看该作者
本帖最后由 sacry 于 2012-05-31 12:53 编辑

回复 43# wwwsq

你成功把我大脑弄成浆糊了。

我之前建议说用identifier,是因为变量这词我真不知道怎么严格点来说明,
你纠结这个我完全无解。
当然,用identifier也是不对的....

然后我不管那个什么未明确定义的anonymous variable,
我今天才知道,
老谭说的“不能用于表达式”,是非常正确,也非常严谨的

unary-expression:
postfix-expression
++ unary-expression
-- unary-expression
unary-operator cast-expression
sizeof unary-expression
sizeof ( type-name )
标准里这样写原来是在扯淡,或者说不能叫”用于“?


还有,
否则就要出现“an expression is a lvalue”这种事情了。

expression 不能是lvalue?

An lvalue is an expression with an object type or an incomplete type other than void   

论坛徽章:
0
46 [报告]
发表于 2012-05-31 13:06 |只看该作者
我应该算是同情老谭的中间派。但是还是要告诫lz,抓尾巴就别抓错位置,抓到大腿上就麻烦了。这方面要向AD,zyl学习啊。

论坛徽章:
0
47 [报告]
发表于 2012-05-31 13:08 |只看该作者
sacry 发表于 2012-05-31 12:52
回复 43# wwwsq

你成功把我大脑弄成浆糊了。



好吧lvalue那个叙述我描述的不准确。原帖我修正了。

An expressionis a sequence of operators and operands that specifies computation of a
value, or that designates an object or a function, or that generates side effects, or that
performs a combination thereof.

expression是有明确定义的。variable在c标准里面是类似数学里面的‘一’那样,是被当作一个不证自明的基础概念的。


话说,你是打算保卫“对象本身就是表达式”这个观点吗?即使是某昏昏,他都不好意思再出来重复这句话呢?


论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
48 [报告]
发表于 2012-05-31 13:12 |只看该作者
回复 47# wwwsq


    额……标准这种东西需要(或者说能有)所谓“不证自明”的概念么……

论坛徽章:
0
49 [报告]
发表于 2012-05-31 13:16 |只看该作者
starwing83 发表于 2012-05-31 13:12
回复 47# wwwsq



c标准里面就没明确定义何谓variable,不是一样用的很开心吗?

某昏昏有很多地方在抱怨说老谭用了未定义的概念,但是c标准一直就是这么做的啊。variable在c标准里面一直就是未明确定义的,都这么多年了。

未明确定义,不等于没有公认的含义。
就像“一”是无法明确定义的,但是绝对不会有人把“一”和“乘法”混淆一样。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
50 [报告]
发表于 2012-05-31 13:18 |只看该作者
回复 49# wwwsq


    除了几个脚注和examples的note,C标准在正文里用到了variable这个术语么……帮我找找?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP