Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么此代码未定义行为? 主程序包 导入“时间” 输入“fmt” var i int=0 func loopInc(){ 为了{ 我++ } } func main(){ go loopInc()_Go_Undefined Behavior - Fatal编程技术网

为什么此代码未定义行为? 主程序包 导入“时间” 输入“fmt” var i int=0 func loopInc(){ 为了{ 我++ } } func main(){ go loopInc()

为什么此代码未定义行为? 主程序包 导入“时间” 输入“fmt” var i int=0 func loopInc(){ 为了{ 我++ } } func main(){ go loopInc(),go,undefined-behavior,Go,Undefined Behavior,这一切都在报告中解释过了 在本例中,递增i和打印i之间不存在“发生在之前”关系。因为不存在“发生在之前”关系,主goroutine可能会也可能不会看到对i的更改 允许编译器对i++进行优化,因为不能保证对i的更改会被观察到。这在中有详细说明 在本例中,递增i和打印i之间不存在“发生在之前”关系。因为不存在“发生在之前”关系,主goroutine可能会也可能不会看到对i的更改 编译器可以优化i++,因为不能保证对i的更改会被观察到 package main import "time" impor

这一切都在报告中解释过了

在本例中,递增
i
和打印
i
之间不存在“发生在之前”关系。因为不存在“发生在之前”关系,主goroutine可能会也可能不会看到对
i
的更改

允许编译器对
i++
进行优化,因为不能保证对
i
的更改会被观察到。

这在中有详细说明

在本例中,递增
i
和打印
i
之间不存在“发生在之前”关系。因为不存在“发生在之前”关系,主goroutine可能会也可能不会看到对
i
的更改

编译器可以优化
i++
,因为不能保证对
i
的更改会被观察到

package main

import "time"
import "fmt"

var i int = 0

func loopInc() {
    for {
        i++
    }
}

func main() {
    go loopInc()
    <-time.After(1 * time.Millisecond)
    fmt.Println(i)
}