表达式是什么意思a = b!= c;

时间:2016-09-21 08:51:44

标签: c

我有以下代码,我不明白

shiftLeft = local.tasks.first != NULL;
if(!shiftLeft) 
  local.tasks.last = NULL;

我的意思是应该最后评估的shiftLeft变量(它是boolean),所以首先评估local.tasks.first!= NULL,但这是什么?

3 个答案:

答案 0 :(得分:5)

这将返回true或false值(取决于local.task.first是否为NULL值的事实)。

如果local.task.firstNULLshiftLeft变量将获得false值,

如果local.task.first不是NULL值,则shiftLeft变量将获得true值。

重要的是,我们不知道shiftLeft的类型,如果它是一个bool变量,它将被填充"具有truefalse值。如果它是其他类型的变量(例如整数),它将被填充" false为0,为0 为true(但我们无法确定究竟是什么)。

答案 1 :(得分:3)

首先评估此!=表达式,因为!=的优先级高于=,因此首先与NULL进行比较,然后分配到shitLeft。< / p>

如果shitLeft为真,则if条件为false,否则为if条件true

答案 2 :(得分:1)

b!= c 部分返回布尔响应(true或false)。然后将结果分配给 a

在您的示例中,如果local.tasks.first不为null,则shitLeft(sic)为true。否则就是假的。