免费注册 查看新帖 |

Chinaunix

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

C深度剖析 [复制链接]

论坛徽章:
0
221 [报告]
发表于 2012-06-21 18:54 |只看该作者
回复 233# 幻の上帝


    我说的不是开始的一段吗???
  果然狗嘴里吐不出象牙 ,你瞎了么??

我标的红的你看了么program  指的是strictly conforming program ,重点是什么?是program  ,标准说的是程序,而且没说编译器,首先这个跟编译器就没半毛钱关系

features of the language and library specified in this International Standard ,register 是c的一个关键字,不是语言的features (我也不翻译了,省的我翻译的不准确,有爱您的理解)

还有It shall not produce output dependent on any unspecified, undefined, or implementation-defined behavior

这是 produce output ,会翻译吗?产生输出,输出时不准用implementation-defined ,标准没说整个程序中时不准用 implementation-defined

看懂了 ,在回答行吗??

论坛徽章:
0
222 [报告]
发表于 2012-06-21 18:56 |只看该作者
回复 233# 幻の上帝



    register 是c的一个关键字,不是语言的features ?
  这句话后面应该有个问号

  还有我们现在讨论的是什么问题??

  是

register 变量必须是 能被CPU 寄存器所接受的类型。


C标准根本没有这种限制
如果编译器限制
说明编译器是非标准的

这句话对错的问题,之前楼提出的问题在这个问题讨论之后再说,在某楼我说过,你自己没看懂??

论坛徽章:
0
223 [报告]
发表于 2012-06-21 18:59 |只看该作者
本帖最后由 幻の上帝 于 2012-06-21 21:06 编辑

回复 238# kzl0629

都说到这还不清楚?继续无视下文?
看来我本来就不应该提strictly conforming program,只拿strictly conforming implementation出来噎你来着。

论坛徽章:
0
224 [报告]
发表于 2012-06-21 19:02 |只看该作者
回复 239# kzl0629

看来还是鸡同鸭讲。
你先搞清楚你要说的“限制”是指什么再说。

论坛徽章:
0
225 [报告]
发表于 2012-06-21 19:12 |只看该作者
回复 241# 幻の上帝


    跟你也鸡同鸭讲,跟限制有什么关系???

     现在的问题你了解吗?

   书上说:register 变量必须是 能被CPU 寄存器所接受的类型。
   pm说:说明编译器是非标准的

   我说:pm说的不对,怎么了??

你要问我限制什么意思,你先说明限制跟这个问题有什么关系

   你看标准对register的定义了吗,就来胡说八道?

标准的意思让变量存取的速度更快,没说非得放寄存器里,只是实现时放到寄存器里最快,所以这么干了,首先这么干是对的,然后再次基础上加些利于这么实现的限制,无可厚非也不能说他不符合标准吧


strictly conforming implementation跟这题有1毛钱关系???除了堆概念能来点干货吗

我上个回答,你还没有令人信服的答案呢,除了堆概念装x没看出来什么啊

论坛徽章:
0
226 [报告]
发表于 2012-06-21 19:14 |只看该作者
回复 241# 幻の上帝


    4) This implies that a conforming implementation reserves no identifiers other than those explicitly
reserved in this International Standard.

看好了,register是c的关键字你敢说不再this International Standard,不懂英文的话就看别人翻译完的文章,别误人误己

论坛徽章:
0
227 [报告]
发表于 2012-06-21 19:17 |只看该作者
大家凑合看吧 是我同学写的 呵呵

论坛徽章:
0
228 [报告]
发表于 2012-06-21 19:22 |只看该作者
本帖最后由 幻の上帝 于 2012-06-21 21:10 编辑

回复 242# kzl0629

什么叫“必须”?“必须”被违反会怎么样?
作为语言为主教科书,约定的规则显然是语言的约束。“必须”告诉读者,违反了这样的限制的代码是错的(比如会编译错误——实现有义务输出诊断消息的一种——然而这里语焉不详)。
这样,这句话就是错的。或者说,这句话描述的编译器实现了错误的约束,这不是标准赋予一个strictly conforming implementation乃至conforming implementation的权利,这和标准规定register修饰的对象放到或不放到寄存器内是implementation-defined毫无关系。至于为什么是这样,这是后面的问题和之前被你错误引用的一段文字说的,不过你既然连这点都没搞清楚,那就是后话。

论坛徽章:
0
229 [报告]
发表于 2012-06-21 19:23 |只看该作者
回复 243# kzl0629

不知该说你对标准理解差好还是语文水平不够好。
总之以后最好看全别人引用的文字,别断章取义顺便YY了。

论坛徽章:
0
230 [报告]
发表于 2012-06-21 19:34 |只看该作者
本帖最后由 hbmhalley 于 2012-06-21 19:46 编辑
kzl0629 发表于 2012-06-21 18:34
回复 221# hbmhalley
    错,建议你读懂标准再来
   标准的意思让变量存取的速度更快,没说非得放寄存器里,只是实现时放到寄存器里最快,所以这么干了,首先这么干是对的,然后再次基础上加些利于这么实现的限制,无可厚非也不能说他不符合标准吧,到目前为止你都是逻辑混乱的

“限制哪些register变量放在register里是implementation-defined的”  简直是逻辑混乱


艹真是服了你了,xxxx 天下无敌。

“限制哪些register变量放在register里是implementation-defined的”  简直是逻辑混乱

我tm这句是在帮你说你看不出来么?抓着个错就跟救命稻草似的。
你居然也知道“register变量必须放在register里”是错的,你回去看看作者说“register 变量必须是 能被CPU 寄存器所接受的类型”是不是“必须放在register里”这个意思?
“限制哪些register变量放在register里是implementation-defined的”我就问你你是怎么把这句理解成“非得放寄存器里”的。我逻辑混乱,你牛b,逻辑真清晰
ps: 以上三句就当你误会好了。你要觉得你没误会也别管了,抓这些鸡毛蒜皮不放真没意思,看下面

pm说在“register 变量必须是 能被CPU 寄存器所接受的类型”这一问题上作者有误,你说pm的“编译器是非标准的”有问题,论据是:这么做的编译器使用了“implementation-defined”的权利,而非违背标准。
kzl0629 发表于 2012-06-21 16:04
回复 139# hbmhalley
“这是实现定义的,编译器这么做不违反标准"
    我这是这个意思


可是你说的使用这一权利的行为完全是另外一会事,拿毫不相关的事实作为自己的论据。
现在来看看到底是谁逻辑混乱:
你在不断重复:对register变量的优化程度是由实现定义的。
标准的意思让变量存取的速度更快,没说非得放寄存器里,只是实现时放到寄存器里最快,所以这么干了,首先这么干是对的,然后再次基础上加些利于这么实现的限制,无可厚非也不能说他不符合标准吧

对,这是由实现定义的。但pm说的违背标准的行为是怎么优化的问题么?
你回去看看,作者说的是优化程度的问题么?
作者说:不能被CPU 寄存器所接受的类型是不能定义成 register 变量的!
你自己说这对不对?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP