深入理解計算機系統 練習題2.31 答案與分析
阿新 • • 發佈:2018-12-10
測試程式碼
#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)。