gpt4 book ai didi

c - 在 C 中调用函数之前的参数评估顺序

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:58 27 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/58457808/

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