C,简单的 if else 语句上的调试器断点
C, debugger breakpoints on simple if else statement
我是编码新手,我正在 CodeBlocks 中编辑一个简单的 C 函数。我在 "else" 旁边看到一个红色错误点,我无法发现我的代码有任何问题,也许是我忽略了。请帮忙,谢谢!
int isZero (float f)
{
unsigned int u = *(unsigned int*)&f;
if ((u== 0x0) || (u==0x80000000) );
return 1;
else
return 0;
return (EXIT_SUCCESS);
}
你多了一个分号。
去掉if ((u== 0x0) || (u==0x80000000) );
末尾的那个
编译器将 ;
读取为一条不执行任何操作的语句;并认为 if
块的内容。下一条语句是 return 1;
,它将 始终 执行。当编译器看到 else
时,它找不到随之而来的 if
,因为 if
块以第一个分号结束。
编译器将其解析为
int isZero (float f)
{
unsigned int u = *(unsigned int*)&f;
if ((u== 0x0) || (u==0x80000000)
/* do nothing */;
return 1;
else /* what does this go with? */
return 0;
return (EXIT_SUCCESS);
}
当你把;在 if 子句之后,它意味着 if 是空的 block.Therefore 无论语句是真还是假 if 旁边的语句总是 excecuted.So 你的代码
if ((u== 0x0) || (u==0x80000000) );
return 1;
评估为
if ((u== 0x0) || (u==0x80000000) )
{ //empty block
}
return 1; //always excecuted
因此,永远不会执行 else 部分,编译器看不到将此 else 关联到的 if 语句,因此您会收到错误。
注意 所有 分号。比你想要的还要多
我是编码新手,我正在 CodeBlocks 中编辑一个简单的 C 函数。我在 "else" 旁边看到一个红色错误点,我无法发现我的代码有任何问题,也许是我忽略了。请帮忙,谢谢!
int isZero (float f)
{
unsigned int u = *(unsigned int*)&f;
if ((u== 0x0) || (u==0x80000000) );
return 1;
else
return 0;
return (EXIT_SUCCESS);
}
你多了一个分号。
去掉if ((u== 0x0) || (u==0x80000000) );
编译器将 ;
读取为一条不执行任何操作的语句;并认为 if
块的内容。下一条语句是 return 1;
,它将 始终 执行。当编译器看到 else
时,它找不到随之而来的 if
,因为 if
块以第一个分号结束。
编译器将其解析为
int isZero (float f)
{
unsigned int u = *(unsigned int*)&f;
if ((u== 0x0) || (u==0x80000000)
/* do nothing */;
return 1;
else /* what does this go with? */
return 0;
return (EXIT_SUCCESS);
}
当你把;在 if 子句之后,它意味着 if 是空的 block.Therefore 无论语句是真还是假 if 旁边的语句总是 excecuted.So 你的代码
if ((u== 0x0) || (u==0x80000000) );
return 1;
评估为
if ((u== 0x0) || (u==0x80000000) )
{ //empty block
}
return 1; //always excecuted
因此,永远不会执行 else 部分,编译器看不到将此 else 关联到的 if 语句,因此您会收到错误。
注意 所有 分号。比你想要的还要多