1.下面程序输出什么?

 
  
  1. void foo(void)  
  2. {  
  3. unsigned int a = 6;  
  4. int b = -20;  
  5. (a + b) > 6 ? puts(">6") : puts("<=6");   
  6. }   

 这个程序输出“>6”。

原因:当表达式中同时存在有符号和无符号数时,自动将有符号数转换为无符号数。

2.下面程序输出什么?

 
  
  1. void test(void
  2.    int a = 2, b = 3, c; 
  3.    c = a+++b; 
  4.    printf("a=%d\n",a); 
  5.    printf("b=%d\n",b); 
  6.    printf("c=%d\n",c); 
  7. }

 这个程序输出:“a=3, b=3,c=5”

原因:根据最长处理原则,第4句被处理成“a++ +b”。