例1
short a = 30000, b = 30000;
printf("sizeof(a) = %d/n", sizeof(a));
printf("sizeof(b) = %d/n", sizeof(b));
printf("sizeof(~a) = %d/n", sizeof(~a));
printf("sizeof(a + b) = %d/n", sizeof(a + b));
printf("a + b = %d/n", a + b);
signed char c = 127;
printf("c+1 = %d/n", c+1);
printf("sizeof(c+1) = %d/n", sizeof(c+1));
short a = 30000, b = 30000;
printf("sizeof(a) = %d/n", sizeof(a));
printf("sizeof(b) = %d/n", sizeof(b));
printf("sizeof(~a) = %d/n", sizeof(~a));
printf("sizeof(a + b) = %d/n", sizeof(a + b));
printf("a + b = %d/n", a + b);
printf("c+1 = %d/n", c+1);
printf("sizeof(c+1) = %d/n", sizeof(c+1));
Result:
sizeof(a) = 2
sizeof(b) = 2
sizeof(~a) = 4
sizeof(a + b) = 4
a + b = 60000
c+1 = 128
sizeof(c+1) = 4
例2
unsigned short a = 1234;
unsigned char b;
b = a;
printf("b = %d/n", b);
printf("a %% (255 + 1) = %d/n", a % 256);
Result:
b = 210
a % (255 + 1) = 210
例3
short a = 1234;
unsigned char b;
b = a;
printf("b = %d/n", b);
printf("a %% (255 + 1) = %d/n", a % 256);
Result:
b = 210
a % (255 + 1) = 210
例4
short a = -1234;
unsigned short b;
b = a;
printf("b = %d/n", b);
printf("a + (65535 + 1) = %d/n", a + 65536);
Result:
b = 64302
a + (65535 + 1) = 64302
例5
double x;
int a = 10, b = 3;
x = a / b; /* x = 3.0 */
x = (double) a / (double) b; /* x = 3.333333 */
x = (double) a / b; /* x = 3.333333 */
x = (double) (a / b); /* x = 3.0 */
例6
double x;
int a = 10, b = 3, c = 5, d = 2;
x = a / b + c / d; /* x = 5.0 */
x = (double) a / b + c / d; /* x = 5.333333 */
x = (double) a / b + (double) c / d; /* x = 5.833333 */
http://www9.plala.or.jp/sgwr-t/detail/TypeConversion.html
http://www.chmhome.com/knowledge/c-c++/20071007/111661.html
http://blog.csdn.net/zhongrg/archive/2007/11/11/1879157.aspx