gpt4 book ai didi

C:条件表达式中的求值顺序

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:27 28 4
gpt4 key购买 nike

<分区>

有如下C代码:

#include <stdio.h>

int main ()
{
int a[5] = {0, 1, 2, 3, 4};
int* a_p = a;
float x = 1.5;

while(x > (*a_p++))
{
printf("*a_p = %d\n", *a_p);
}

printf("*a_p = %d", *a_p);
return 0;
}

问题是最终 printf 语句的结果是什么?我会判断顺序是:

1) 在 while 中,a_p 地址递增 => *a_p 为 1 (a[1])

2)1.5与1比较

3) 在 while 中,a_p 地址再次递增 => *a_p 为 2 (a[2])

4)1.5与2比较

5) *a_p

打印 2

我试过 3 个编译器,结果是 3 个。为什么3是正确的结果?是先完成比较,然后递增指针,这意味着在上面的第 4 步,完成比较后,*a_p 是 3?这始终是行为(是否定义了此行为)还是依赖于编译器?

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