编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:   Password: 
 登记登记   
 添加/减法与常量添加/删除相同
指数 -> 一般编程
查看上一个主题 可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
Mirhagk.




邮政发布: 2013年9月25日星期三晚上9:14  POST主题:添加/减法与常量添加/删除相同

基本上是

代码:
X =n;

相同的
代码:
X =(n + k) - k;


对于计算机上的N和K的所有值。 n + k可能会溢出,但假设它沉默溢出将减去k始终修复它。

此外,它将与任何添加和减去合作。 IE可以编译器可以任意添加和减去常量到值,只要溢出不必抛出异常?
赞助
赞助
赞助
赞助
虫子




邮政发布: 2013年9月25日星期三晚10:27  帖子主题:Re:添加/减法与常量添加/删除相同

在这样的情况下,它真的到了编译器。愚蠢的编译器将原样翻译,在这种情况下,它需要更多的指示。像GCC这样的智能编译器将简化大量表达式,在这种情况下,将其减少到单个内存分配。
魔鬼




邮政发布: 2013年9月25日星期三10:34 AM  帖子主题:Re:添加/减法与常量添加/删除相同

您的答案可能取决于编译器在执行此操作时。如果这是在编译时完成的,我无法看到任何负面影响。如果它在运行时完成,那么有一些明显的问题:

- 显而易见的优化问题
- 并发上下文可能需要互斥锁,而X正在修改

当然,所有这些都依赖于硬件,硬件语义和语言语言的语义的精确表示。例如,在c中,如果x是无符号(或者也可能是n和k这很重要,那么很难用c)那么有效。但是,如果x被签名,则溢出导致未定义的行为(因为我们只是喜欢这种短语)。其他系统将使用饱和算术或定义溢出行为以不同。

所有这些都假定整数。使用IEEE 754浮点数,该操作可能导致精度和其他问题的显着损失。

为什么?
Mirhagk.




邮政发布: 2013年9月25日星期三9:58  帖子主题:Re:添加/减法与常量添加/删除相同

好的,让我们假设它是编译成装配的手,它是MIPS,它使用了整数的非捕获(无异常)添加命令。

从它的外观,它将其周围的值包裹在阳性到负面,并同样地回来,所以我认为应该没问题。

我还试图找到有关汇编语言级别黑客的任何信息,特别是MIPS。为了有趣,我试图尽可能多地刮掉代码的指示,而且我很好奇我可以获得我的代码
从上一个显示帖子:   
   指数 -> 一般编程
查看上一个主题 告诉一个朋友可打印的版本下载主题订阅本主题私人信息刷新页面 查看下一个主题

11  [ 4 Posts ]
跳到:   


Style:  
搜索: