最近我遇到了这个程序 X = 3 * 4%5/2 在算术表达式中,先行的顺序是乘法,除法和模数。 如果我们评估表达式,答案应为0但答案是1.请解释
答案 0 :(得分:1)
查找C运算符优先级表here。
请注意, ........
.then(function (next) {
var jsonData = {
name: req.body.name,
year: req.body.year
};
socket.once('drain', function () {
socket.write(jsonData, (done)=>{
console.log(done0);
next(null, 2);
});
});
})
..........
都具有相同的优先级和从左到右的关联性。
从左到右进行评估:* / %
就个人而言,我有一条规则,如果我任何关于优先级的不确定性,我会使用括号进行分组。依赖运算符优先级是不明智的:它可以在语言和数学风格之间进行。一个优秀的程序员/数学家试图确保他们的代码按预期进行评估,并且还要明确地将这个意图传达给他人:括号消除歧义。
答案 1 :(得分:-2)
答案仅为1。 3 * 4 = 12,12%5 = 2,2/2 = 1
所以答案是1。
如果从右侧执行操作,您将获得0。但那不正确。当*,%,/具有相同的优先级时,第一个操作将通过选择最左边的运算符来完成。所以我们选择*。接下来是%。之后 /。