【发布时间】:2025-12-29 04:30:12
【问题描述】:
所以我有一个 function1,它返回 0 或 1。
我有一个 function2,它接收 function1 作为参数。现在,在某些情况下,我想在 function2 中正常使用 function1,所以我只需调用 function2(function1);
在其他情况下,我想在函数 2 中使用 function1,但我希望 function2 在返回 0 时从 function1 接收 1,并在返回 1 时从 function1 接收 0。
也就是说,如果函数 1 返回 0,则 function2 得到 1。如果函数 1 返回 1,则 function2 得到 0。
我尝试使用 XOR(function2(function1 ^1);) 进行调用,但这似乎不起作用。
有什么想法吗?
PS:我知道这听起来可能令人困惑,对此我深表歉意。
编辑:
对不起大家,忘了说function2接收到一个函数的指针,而不仅仅是function1的结果。
【问题讨论】:
-
你可以写在function2中: int ret = 1-function1();如果 function1() 返回 1,则 ret 将为 1-1=0。如果 function1 返回 0,则 ret 将为 1-0=1。
-
确保您使用括号来实际调用函数 1:
function1()。只要 function1 返回 0 或 1,您的 xor 就应该工作。您也可以使用!(逻辑上不是)。 -
你说的这似乎不起作用是什么意思?什么错误信息?它是编译,还是不产生正确的结果?而
function2(function1)是调用function1的无效C 语法。 -
实际上....
function2(function1)将在gcc中编译,并警告您正在从一个指针转换为没有转换的整数。 -
创建一个否定结果的包装函数。将包装器作为参数传递。