sách gpt4 ai đã đi

c - 当取消引用和后递增指向函数指针的指针时,首先发生什么?

In lại 作者:行者123 更新时间:2023-12-04 12:20:44 28 4
mua khóa gpt4 Nike

给定这段代码:

 typedef void (*Thunk)();
Thunk* gFP;

void foo(){ printf("Foo "); *gFP(); };
void bar(){ printf("Bar ");

Thunk Codex[] = { foo, bar };

gFP = Codex;

(*gFP++)();

函数调用发生在自增之前还是之后?
即:这会打印“Foo Foo Foo ...”还是“Foo Bar”?

1 Câu trả lời

这只是我个人的看法。我不是 100% 相信这是正确的。所以,如果我的回答有误,请见谅。

C99 6.5.2.2/10 函数调用 giải thích:

The order of evaluation of the function designator, the actual arguments, and subexpressions within the actual arguments is unspecified, but there is a sequence point before the actual call.

C99 6.5.2.4/2 后缀递增和递减运算符giải thích:

The side effect of updating the stored value of the operand shall occur between the previous and the next sequence point.

后增量运算符的副作用是在下一个序列点。假设表达式 f( x ),我认为在fx求值之后有一个序列点,并且在函数调用之前。所以,gFP++的side effect会在函数调用之前完成,问题中的代码预计会打印 Foo Bar.

biên tập:我删除了 C99 和 C++ 中 Annex-C 的引号,并添加了引号C99.
可能之前的引述对这个问题含糊不清。

关于c - 当取消引用和后递增指向函数指针的指针时,首先发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5108664/

28 4 0
Bài viết được đề xuất: gradle - 如何使用 Bintray 用户存储库(正确地)作为 gradle 的依赖项?
Bài viết được đề xuất: rdply 和 .id 参数 - NULL 不起作用
Bài viết được đề xuất: r - 将日期格式化为格式 "%Y-%m"的问题
Bài viết được đề xuất: Hỗ trợ RStudio HiDPI
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com