GCC4.1.2 on a Intel Xeon CPU The test program is test.c: extern int bar(short);
int foo(short arg1, short arg2) { short res; res = arg1 + arg2; return bar(res); } Compiled with : gcc -fdump-tree-all -S test.c The resulting test.c.t02.original is : ;; Function foo (foo) ;; enabled by -tree-original { short int res; short int res; res = (short int) ((short unsigned int) arg1 + (short unsigned int) arg2); return bar ((int) res); } So, my question is : why gcc casted "short" to "short unsigned int" before addition and casted back after? -- 此致 敬礼! 梁��