【发布时间】:2017-05-10 15:34:14
【问题描述】:
从下面的代码中,输出答案是否只有8?还有什么其他可能的输出(解释会很好)?
int i = 0;
void *doit(void *vargp) {
i = i + 5;
}
int main() {
pthread_t tid;
pthread_create(&tid, NULL, doit, NULL);
i = i + 3;
pthread_join(tid, NULL);
printf("%d\n", i);
}
【问题讨论】:
-
你测试了吗?
-
由于您的程序具有从多个线程对对象的非只读、非原子、非同步访问,因此行为未定义。因此,该程序完全没有意义。程序不需要任何输出,如果有,输出是“大象”是完全允许的。
-
@EOF 这是练习题之一。根据给定的代码,可能的输出是 3 还是 8 ?
-
@ssss 那么你的导师不知道 C。可能的输出范围不受限制。