gpt4 book ai didi

c - C 中函数调用之前的参数求值顺序

转载 作者:行者123 更新时间:2023-11-30 16:51:04 24 4
gpt4 key购买 nike

在 C 中调用函数参数时可以假定函数参数的求值顺序吗?根据下面的程序,我执行的时候好像没有特定的顺序。

#include <stdio.h>

int main()
{
int a[] = {1, 2, 3};
int * pa;

pa = &a[0];
printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa), *(pa++),*(++pa));
/* Result: a[0] = 3 a[1] = 2 a[2] = 2 */

pa = &a[0];
printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa++),*(pa),*(++pa));
/* Result: a[0] = 2 a[1] = 2 a[2] = 2 */

pa = &a[0];
printf("a[0] = %d\ta[1] = %d\ta[2] = %d\n",*(pa++),*(++pa), *(pa));
/* a[0] = 2 a[1] = 2 a[2] = 1 */

}

最佳答案

不,函数参数在 C 中不会按定义的顺序求值。

查看 Martin York 对 What are all the common undefined behaviour that c++ programmer should know about? 的回答.

关于c - C 中函数调用之前的参数求值顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41906404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com