我想我可能知道答案,但我想确保我完全理解。
我在C中编写了一个Queue结构,以及在Queue结构上使用的操作。我想弹出队列,检索一个元素。这个元素将是我函数的第一个参数。我想再次弹出队列,检索第二个元素。第二个元素是我的第二个参数。
例如:
e1 = pop(Q);
e2 = pop(Q);
myfunction(e1, e2);
我想以更加顺畅的方式做到这一点,不需要我制作两个一次性变量。
我的假设如下:
myfunction(pop(Q), pop(Q))
但我不能100%确定这是否正确。
这是对的吗?有没有更明智的方法来实现这个目标?
答案 0 :(得分:2)
函数参数的评估顺序是未定义的,因此第二个片段可能与第一个片段相同或不同。
在这种情况下,myfunction(pop(Q), pop(Q))
会导致未定义的行为。
答案 1 :(得分:0)
除了迈克尔的答案之外,如果这是一个经常重复的构造,你也可以创建一个函数if (ContextCompat.checkSelfPermission(getApplicationContext(),
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
MY_PERMISSIONS_REQUEST_CAMERA);
}
,它将抽象掉样板。
此外,除非您弹出整数或类似内容,否则更实际的代码最终会显示为:
myFunctionFromQueue(Q)