作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我们有以下用 C(或类似语言)编写的代码:
if (x < 10)
do_work1();
else if (x < 5)
do_work2();
这个条件的第二个分支在某些情况下会被执行吗?编译器会警告无法访问的代码吗?
最佳答案
condition的第二个分支在某些情况下会被执行吗?
编译器不应该警告无法访问的代码吗?
以此为例:
int x = 11;
void* change_x(){
while(1)
x = 3;
}
int main(void)
{
pthread_t cxt;
int y = 0;
pthread_create(&cxt, NULL, change_x, NULL);
while(1){
if(x < 10)
printf("x is less than ten!\n");
else if (x < 5){
printf("x is less than 5!\n");
exit(1);
}
else if(y == 0){ // The check for y is only in here so we don't kill
// ourselves reading "x is greater than 10" while waiting
// for the race condition
printf("x is greater than 10!\n");
y = 1;
}
x = 11;
}
return 0;
}
输出:
mike@linux-4puc:~> ./a.out
x is greater than 10!
x is less than 5! <-- Look, we hit the "unreachable code"
关于c - If .. else number is smaller than, unreachable 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157985/
我是一名优秀的程序员,十分优秀!