即便想记住,恐怕也不容易吧。除了常见的加减乘除,在硬件运算逻辑里面容易忽略的一些运算符(操作符)的优先级,包括等值操作符==、!=、===、!==,移位操作符<<、>>,按位操作符|、^以及逻辑操作符&&、||等。如果在运算时,以上这些运算符发生了混用,那么“强烈”建议大家使用小括号来表明运算意图!这可以避免很多因疏忽而带来的运算结果错误。甚至更糟糕的是,一时的疏忽大意还会让你在调试过程中困扰不已,直到某个时刻大脑迎来了光,才会茅塞顿开呢!
关键词:
operator 运算符(操作符),precedence 优先级
避坑指南:
遇到移位操作符、等值操作符、按位操作符等,建议使用小括号表明运算意图。例如, A + B << 4 ,并不表示A+B以后再左移4位,而实际上是B先左移4位再与A相加;又比如 A ^ B ! == C ,并不表示A^B运算后再与C判断等值,而是B先与C判断等值,待得出其逻辑结果1或0后,再与A进行异或运算。
这里附上IEEE-1800 SystemVerilog-2017标准手册关于运算符的优先级表格。
阅读手记: