当条件为假时,读取"if"条件(任何语言)?

Sea*_*oux -2 compiler-construction if-statement

好吧,这是一个简单的问题,可能有点明显但是,当'if'有一个错误的条件时,它是由编译器读取的,还是编译器直接跳过它?

谢谢!:)

Pio*_*ski 5

编译器总是读取整个程序.如果满足"if"条件,许多优化编译器会分析是否可以在编译时评估条件值.如果在编译时已知,则编译器可能会完全从生成的代码中消除该条件.但是,如果在编译时未知条件的值,则编译器将生成用于在运行时评估条件的代码.

在运行时,通常使用条件跳转指令跳转到正确的代码段,具体取决于条件值.例如,如果条件结果为假,则CPU将直接"跳过"if主体中的代码.