gpt4 book ai didi

我可以调用这样一个返回值的子例程,就好像它返回 `void` 一样吗?

转载 作者:行者123 更新时间:2023-12-02 09:17:08 25 4
gpt4 key购买 nike

摘自《编程语言语用学》,作者:Scott:

If the programmer wishes to call a subroutine that does return a value, but the value is not needed in this particular case (all that matters is the side effect[s]), then the return value in C can be discarded by “casting” it to void:

foo_index = insert_in_symbol_table(foo);
...
(void) insert_in_symbol_table(bar);

我可以调用这样一个返回值的子例程吗,就好像它返回void一样?

insert_in_symbol_table(bar);  

我违反了哪些语法或语义规则?

谢谢。

最佳答案

你不需要将强制转换为void。例如,printf函数返回一个值(写入了多少个字符),但很少看到有人捕获返回值或将其设为无效。

如果您以一种不寻常或违反直觉的方式专门针对副作用调用一个函数,并且您想向其他阅读代码的人明确表示是的,您知道您正在这样做,那么 void 强制转换通常是一个好主意忽略返回值,是的,这是故意的。

关于我可以调用这样一个返回值的子例程,就好像它返回 `void` 一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45823525/

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