测试代码
#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)。