gpt4 book ai didi

c - printf - 带指针的 "unexpected"输出

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:05 24 4
gpt4 key购买 nike

我收到了一个 friend 的挑战。
作为这个挑战的一部分,我写了一个函数来从 String 中获取一个 int,该函数获取一个 chars 数组和一个指向编号,索引。

为了检查这个函数是否有效,我用 2 个数字运行它并观察输出。
在我的 main 中,我打印了 4 个值:

int t = 0;
printf("%d -> %d, %d -> %d\n", t, getNumber("99", &t), t, getNumber("as48", &t));

我应该得到:0 -> 99, 2 -> 48
输出为:2 -> 99, 0 -> 0

经过几次测试,我看到它在函数结束后打印 t,并且它首先执行最后一个函数调用。
我明白这是有道理的:在 Assembly 中,最后一个参数首先被压入堆栈,因此当它被弹出时,参数将以正确的顺序排列。

我的问题是:
我可以以“正常”方式打印它,使其看起来“应该”吗?如何?

最佳答案

Can I print in in a "normal" way so it will look as it "should"? How?

不能保证 C 中函数参数的求值顺序。所以,答案是
另请注意,printf 函数调用会调用未定义的行为,因为其参数的评估顺序未排序

关于c - printf - 带指针的 "unexpected"输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34877650/

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