编译器在后期和预增量中的行为如何?

时间:2013-05-01 10:55:00

标签: c compiler-construction

#include <stdlib.h>
#include <stdio.h>

int main()
{
    int i = 0;
    i = 10; printf("++i, ++i :--> The value is: %d, %d\n", ++i, ++i);
    i = 10; printf("++i, i++ :--> The value is: %d, %d\n", ++i, i++);
    i = 10; printf("++i, --i :--> The value is: %d, %d\n", ++i, --i);
    i = 10; printf("++i, i-- :--> The value is: %d, %d\n", ++i, i--);
    i = 10; printf("++i, i   :--> The value is: %d, %d\n", ++i, i);
    i = 10; printf("i++, ++i :--> The value is: %d, %d\n", i++, ++i);
    i = 10; printf("i++, i++ :--> The value is: %d, %d\n", i++, i++);
    i = 10; printf("i++, --i :--> The value is: %d, %d\n", i++, --i);
    i = 10; printf("i++, i-- :--> The value is: %d, %d\n", i++, i--);
    i = 10; printf("i++, i   :--> The value is: %d, %d\n", i++, i);

    return 0;
}

输出:

++i, ++i :--> The value is: 12, 12
++i, i++ :--> The value is: 12, 10
++i, --i :--> The value is: 10, 10
++i, i-- :--> The value is: 10, 10
++i, i   :--> The value is: 11, 11
i++, ++i :--> The value is: 11, 12
i++, i++ :--> The value is: 11, 10
i++, --i :--> The value is: 9, 10
i++, i-- :--> The value is: 9, 10
i++, i   :--> The value is: 10, 11

请您告诉我编译器是如何执行的。

1 个答案:

答案 0 :(得分:-2)

在i ++中

  • 执行算术操作或任何其他代码操作
  • 之后增加1或向i添加1个值。
  

I = 10;   printf(“i:%d”,i ++)

答案是:10。

在上面,编译器首先打印答案,然后添加1个值......

In ++ i

  • 首先为i
  • 添加1个值
  • 并在i。上执行另一项操作后<。li>