我的if / else结构有点麻烦。
所以,对于" num = 65279"
,我不确定为什么,我写的这个if / else结构最终会进入第一个if if,如预期的那样,但也会进入最后if ("if(num <= 65535")
。我不确定为什么会发生这种情况,因为我正确使用了{}。我怎样才能更好地重构我的代码,以便不再发生此错误。或者我为这个错误做了什么? num是一个无符号的短文。
我正在使用Linux gcc编译器。
if(num >= 55296 && num < 56320){
...
}
else{
if(num <= 127){
...
}
else{
if(num <= 2047){
...
}
else{
if(num <= 65535){ ...
}
}
}
}
答案 0 :(得分:0)
您应该正确格式化代码,这样可以更容易理解。在这里你可以看到程序将达到的所有要点(......)。您提到的两个if语句都可以根据您的代码运行。如果这不是它应该如何,那么你需要重写它。如果它们都应该能够运行,那么你需要指定num的值是什么并提供更多信息。
if(num >= 55296 && num < 56320) {
...
} else {
if(num <= 127) {
...
} else {
if(num <= 2047) {
...
} else {
if(num <= 65535) {
...
} else {//I added this
...
}
}
}
}
编辑:我看到你说num是一个2字节的整数,所以我添加的部分永远不会实际运行。 “if(num&lt; = 65535){”将永远为真,因为你不能存储更高的数字。
答案 1 :(得分:0)
如果num值等于65279
,正如您所说,那么您的代码就是按照您所说的去做。没有错误。如果num值为less than 65535
,则表示执行最后一个条件。其中,65279 IS less than 65535
。我不确定你是否很好地表达了这个问题,但这似乎就是答案。
答案 2 :(得分:0)
此处的格式不会显示在评论中,因此我将其作为答案发布。
在尝试阅读代码时,使用一致缩进作为清晰格式的Kudeos实际上非常重要。但是你使你的代码变得比它需要的更复杂。
此代码
if ( cond1 )
{
...
}
else
{
if ( cond2 )
{
...
}
else
{
if ( cond3 )
{
...
}
else
{
if ( cond4 )
{
...
}
}
}
}
与
相同if ( cond1 )
{
...
}
else if ( cond2 )
{
...
}
else if ( cond3 )
{
...
}
else if ( cond4 )
{
...
}
哪一个更简单,更容易理解?