MST

星途 面试题库

面试题:Go操作符优先级与代码逻辑问题

有如下Go代码片段: ```go package main import ( "fmt" ) func main() { a := 5 b := 3 c := 2 result := a < b && c++ > 1 || a++ > b fmt.Println(result, a, b, c) } ``` 请预测输出结果,并详细解释由于操作符优先级导致的程序执行逻辑。
46.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 预测输出结果
    • 输出为:true 6 3 2
  2. 操作符优先级及程序执行逻辑解释
    • 在Go语言中,逻辑运算符&&||的优先级低于比较运算符<>
    • 首先计算a < b,这里a = 5b = 3,所以a < bfalse
    • 对于逻辑与&&,当左边表达式为false时,右边表达式c++ > 1不会被执行(短路求值),因为整个&&表达式已经确定为false
    • 接着计算逻辑或||,此时前面的a < b && c++ > 1false,所以需要计算右边的a++ > b。这里a++是先使用a的值进行比较,然后a自增。a初始值为5b35 > 3true,然后a自增为6
    • 由于a < b && c++ > 1 || a++ > ba++ > btrue,所以整个表达式resulttrue
    • 最终a自增后为6b保持为3c因为c++未执行仍为2,所以输出true 6 3 2