1. 程式人生 > >深入理解計算機系統 練習題2.31 答案與分析

深入理解計算機系統 練習題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)。