Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GCC if调度_C_Gcc - Fatal编程技术网

GCC if调度

GCC if调度,c,gcc,C,Gcc,在C语言中,使用GCC编写if语句时,如下所示: if(function()| A==B) 我们可以考虑,如果A等于B,函数()不被执行吗? 如果语句是这样写的: if(A==B | | function()) 我知道,如果我们希望每次都执行语句,那么在语句之前调用函数更为明确,但我读到的代码是这样的。C语言要求短路运算符|和&&从左到右处理操作数。因此,它将始终计算左操作数,但右操作数将按条件计算。对于| |,如果左操作数为false,则计算右操作数。对于&&,如果左操作数为真,则它将计算右操

在C语言中,使用GCC编写if语句时,如下所示:

if(function()| A==B)

我们可以考虑,如果A等于B,函数()不被执行吗? 如果语句是这样写的:

if(A==B | | function())


我知道,如果我们希望每次都执行语句,那么在语句之前调用函数更为明确,但我读到的代码是这样的。

C语言要求短路运算符
|
&&
从左到右处理操作数。因此,它将始终计算左操作数,但右操作数将按条件计算。对于
| |
,如果左操作数为false,则计算右操作数。对于
&&
,如果左操作数为真,则它将计算右操作数

所以秩序肯定很重要
function()|| A==B
调用该函数。如果返回false,它将测试
A==B
。但是
A==B | | function()
首先测试
A==B
,并且仅在它们不相等时调用该函数

这不是特定于GCC的,它是语言规范的一部分(在许多其他语言中也是类似的)。它也与
if
无关,因为您可以在允许表达式的任何位置使用逻辑运算符,例如

int foo = function() || A==B;
回答你的问题了吗?请注意,顺序非常重要,
if(a()| | b())
将仅在返回
true
时调用
a
,而
if(b()| a())
将在
b
返回false时调用
b
a
(按此顺序)。