bool类型可转换为任何算术类型-------bool值false用0表示,而true则用1表示.
注意:由于true转换为1,因此要检测某值是否与bool字面值true相等,其等效判断条件通常很难正确编写:
if(val==true){/*....*/}
val本身是bool类型,或者val具有可转换为bool类型的数据类型.如果val是bool类型,则该判断条件等效于:
if(val){/*.....*/}
更重要的是,如果val不是bool值,val和true的比较等效于:
if(val==1){/*...*/}
这与下面的条件判断完全不同
//condition succeeds if val is any nonzero value
if(val) {/*...*/}
此时,只要val为任意非零值,条件判断都得true.如果显式地书写条件比较,则只有当val等于指定的1值时,条件才成立
位操作:由于系统不能确保如何处理其操作数的符号位,所以强烈建议使用unsigned整型操作数
~ 位取反 <<左移 >>右移 &位与 ^位异或 |位或
注意:由于true转换为1,因此要检测某值是否与bool字面值true相等,其等效判断条件通常很难正确编写:
if(val==true){/*....*/}
val本身是bool类型,或者val具有可转换为bool类型的数据类型.如果val是bool类型,则该判断条件等效于:
if(val){/*.....*/}
更重要的是,如果val不是bool值,val和true的比较等效于:
if(val==1){/*...*/}
这与下面的条件判断完全不同
//condition succeeds if val is any nonzero value
if(val) {/*...*/}
此时,只要val为任意非零值,条件判断都得true.如果显式地书写条件比较,则只有当val等于指定的1值时,条件才成立
位操作:由于系统不能确保如何处理其操作数的符号位,所以强烈建议使用unsigned整型操作数
~ 位取反 <<左移 >>右移 &位与 ^位异或 |位或