深入理解计算机系统 练习题2.31 答案与分析

测试代码

#include <stdio.h>  
#include "stdafx.h"
#include <iostream>


using namespace std;

int uadd_ok(int x, int y) {
    int sum = x + y;
    cout << sum << endl;
    cout << sum - x << endl;
    cout << sum - y << endl;
    cout << ((sum - x == y) && (sum - y == x)) << endl;
    return (sum - x == y) && (sum - y == x);
}
int main() {
    int x = 10000;
    int y = 4294967295;
    cout << uadd_ok(x, y)<<endl;

}

其实书中说的很明白,但是有一点容易让人误解return (sum - x == y) && (sum - y == x);此时执行的时候不是值计算,而是公式计算,即(sum - x == y) && (sum - y == x) 等价于( y == y) && (x == x)。

猜你喜欢

转载自blog.csdn.net/ciqingloveless/article/details/82745271