/**************************************************************** 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/ 四则运算符号。 ****************************************************************/ //对数字做运算,除了四则运算,就只剩下位运算 #include <stdio.h> int Add(int num1, int num2) { int sum, carry; do { sum = num1 ^ num2; carry = (num1 & num2) << 1; num1 = sum; num2 = carry; } while(num2 != 0); return num1; } // ====================测试代码==================== void Test(int num1, int num2, int expected) { int result = Add(num1, num2); if(result == expected) printf("%d + %d is %d. Passed\n", num1, num2, result); else printf("%d + %d is %d. Failed\n", num1, num2, result); } int main() { Test(1, 2, 3); Test(111, 899, 1010); Test(-1, 2, 1); Test(1, -2, -1); Test(3, 0, 3); Test(0, -4, -4); Test(-2, -8, -10); }
原文:http://blog.csdn.net/walkerkalr/article/details/21552159