gpt4 book ai didi

c - If .. else number is smaller than, unreachable 代码

转载 作者:太空狗 更新时间:2023-10-29 16:42:48 26 4
gpt4 key购买 nike

假设我们有以下用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com