简单来说
if (明天晴天)
if (我有时间)
我去打球
else
我去看书
这几行代码的意思是
"如果明天晴天并且我有时间,我去打球,如果明天晴天但是我没有时间,我去看书,如果明天不是晴天,我什么都不做"
if (明天晴天)
if (我有时间)
我去打球
else
我去看书
而不是"如果晴天并且有时间,我去打球,如果晴天我没时间,我什么都不做,如果明天不是晴天,我去看书"
if (明天晴天)
if (我有时间)
我去打球
else
我去看书
为了表达"如果晴天并且有时间,我去打球,如果晴天我没时间,我什么都不做,如果明天不是晴天,我去看书"这个逻辑,那么需要用花括号
if (明天晴天)
{
if (我有时间)
我去打球
}
else
我去看书
当不写花括号的时候,if和最近的else匹配
当写了花括号之后,就类似四则混合运算写括号一样,括号里面的if,else自行匹配,括号外面的按之前的规则就近匹配
那么什么是就近呢
就类似括号的嵌套(()()),每个)和它前面最近的(组成一对
因为if可以不跟else
那么类比括号的嵌套,如果写成这样((),可以肯定后面的()是一对,前面的括号没有写反括号,而不是一对()将一个(包在里面
就是else与最近的if匹配
在使用 if 语句时,一般建议将代码块用大括号括起来,以提高代码的可读性和可维护性。这样可以减少出错的可能性,并且可以防止由于代码格式化错误而导致逻辑发生错误。
然而,对于单条语句的情况,如果确保代码逻辑正确且易于理解,也可以不使用大括号括起来。
两种写法而已。如果不用大括号括起来的这种写法,多层逻辑 else会匹配最近的一次if。也就是你贴图中的 if(x<13)...这条。如果你想让他匹配第一个if(x>7)这个,这个if(x>7)后面的执行语句需要用大括号括起来。
如果对你有帮助,麻烦点一下采纳,谢谢。
ERROR: PREPROCESSOR: MACROS TOO NESTED宏嵌套过多
ACTION: PARSING SOURCE-FILE
检查头文件是否嵌套
..\Driver\iic.c(10): error C202: 'P21': undefined identifier
检查C文件是否加头文件。
出现类似 0xA3这类报错的看样子没错的可能是多一个空格。
User\mian.c(161): warning C206: 'Pcf8591_Adc': missing function-prototype
User\mian.c(161): error C267: 'Pcf8591_Adc': requires ANSI-style prototype
编译问题:.c文件里的函数头文件未声明;
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: _DATA_GROUP_
LENGTH: 001CH
Program Size: data=112.3 xdata=0 code=5537
片内内存不足,可以将变量存储到片外ram中,例如:
xdata unsigned long ms = 0;
xdata unsigned long key_time;