C语言中的顺序点

1.每个完整表达式结束后,即分号后面
2.&&,||,三木运算符(?:),以及逗号表达式的每一个运算对象计算之后
3.函数调用中对所有实际参数的求值完成之后(进入函数体之前)

https://blog.csdn.net/baidu_25773927/article/details/50520610

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    int k = 2;
    int a = 1;
    k = k++ + k++;
    printf("k = %d\n",k);
    if(a--&&a)
    {
        printf("a = %d\n",a);
    }
    system("PAUSE");
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
int f(int i, int j)
{
    printf("%d, %d\n", i, j);
}
int main(int argc, char *argv[])
{
    int k = 1;
    f(k, k++);
    printf("%d\n", k);
    system("PAUSE");
    return 0;
}
输出结果
//2,1
//21234567891011121314151617181920
也就是 i =2,j = 1, k = 2
之前提到实参在传入函数之前对实参的求值完成之后是一个顺序点,也就是在进行值传递的时候K已经是2了,

相关推荐