基本数据类型的运算


#include <iostream >
#include <cstdio>
using namespace std;
void test_int()
{
	printf("\ntest int:\n");
	int a = 100000;
	cout << "100000 * 100000 = " << a * a << endl;
	cout << " 14  / 5  = " << 14 / 5 << endl;
	cout << " 14  % 5  = " << 14 % 5 << endl;
	cout << " -14 / 5  = " << -14 / 5 << endl;
	cout << " -14 % 5  = " << -14 % 5 << endl;
	cout << " 14  / -5 = " << 14 / -5 << endl;
	cout << " 14  % -5 = " << 14 % -5 << endl;
	cout << " -14 / -5 = " << -14 / -5 << endl;
	cout << " -14 % -5 = " << -14 % -5 << endl;
}
void test_double()
{
	printf("\ntest double:\n");
	double c, d, z;
	c = 1.0; d = 0.0;
	cout << " 1.0  / 0.0 = " << c/d << endl;
	c = -1.0; d = 0.0;
	cout << " -1.0 / 0.0 = " << c/d << endl;
	c = 0.0; d = 0.0;
	cout << " 0.0  / 0.0 = " << c/d << endl;
	z = 1.0;
	cout << " z = 1.0; z = " << z << endl;
	z /= 12345678912345.0;
	
	cout << " z /= 12345678912345.0; z = " << z << endl;
	z += 1.0;
	cout << " z += 1.0; z = " << z << endl;
	z -= 1.0;
	cout << " z -= 1.0; z = " << z << endl;
	z *= 12345678912345.0;
	cout << " z *= 12345678912345.0; z == " << z << endl;
}
void test_bool()
{
	printf("\ntest bool:\n");
	cout << "(1 <= 2) = " << (1 <= 2) << endl;
	cout << "(3 == 4) = " << (3 == 4) << endl;
	cout << "(5 != 6 && -7 <= 10) = " << (5 != 6 && -7 <= 10) << endl;
	cout << "(1234 & 5678) = " << (1234 & 5678) << endl;
	cout << "(1 << 16) = " << (1 << 16) << endl;
}
void test_order()
{
	printf("\ntest order:\n");
	int a = 2, b = 3;
	cout << "(a++) * (a+2*b) * (b++) = " << (a++) * (a+2*b) * (b++) << endl;
}
void test_char()
{
	printf("\ntest char:\n");
	cout << "'A ' + 2 = " << 'A' + 2 << endl;
	cout << "(char)('A ' + 2) = " << (char)('A' + 2) << endl;
	cout << "'z' - 'f' = " << 'z' - 'f' << endl;
}
int main()
{
	test_int();
	test_double();
	test_bool();
	test_char();
	test_order();
	
	return 0;
}

/*

test int:
100000 * 100000 = 1410065408
 14  / 5  = 2
 14  % 5  = 4
 -14 / 5  = -2
 -14 % 5  = -4
 14  / -5 = -2
 14  % -5 = 4
 -14 / -5 = 2
 -14 % -5 = -4

test double:
 1.0  / 0.0 = inf
 -1.0 / 0.0 = -inf
 0.0  / 0.0 = nan
 z = 1.0; z = 1
 z /= 12345678912345.0; z = 8.1e-014
 z += 1.0; z = 1
 z -= 1.0; z = 8.10463e-014
 z *= 12345678912345.0; z == 1.00057

test bool:
(1 <= 2) = 1
(3 == 4) = 0
(5 != 6 && -7 <= 10) = 1
(1234 & 5678) = 1026
(1 << 16) = 65536

test char:
'A ' + 2 = 67
(char)('A ' + 2) = C
'z' - 'f' = 20

test order:
(a++) * (a+2*b) * (b++) = 48

*/