trh*_*178 9 c standards conditional
C条件语句总是返回[1或0],还是返回[0或'除零以外的值'].我问因为:
伪代码 -
foo(address,shouldSend):
寄存器>> = 1
寄存器<< = 1 //清除第一个位置
寄存器中的位| = shouldSend //表示是否应该发送
如果有人在一个大于1的shouldSend值中传递了一个问题,那么就会出现问题(因为只有0是假的而其他所有都是真的,技术上这是有效的).因为我直接用寄存器OR发送shouldSend的真值,所以最好不要说0xFF!我已经有了一个解决方案,所以问题更多的是出于好奇的缘故.我想知道如果:
foo(address,shouldSend):
寄存器>> = 1
寄存器<< = 1 //清除第一个位置
寄存器中的位| = (shouldSend> 0) //表示是否应该发送
解决了这个问题?我认为现在传入的0xFF(或一般来说,大于1)的问题被C条件掩盖.但这只能保证IF C条件保证返回[0或1].
ps - 我也意识到它可能依赖于编译器,但是ansi标准对此有何看法?
Vla*_*mir 17
Standard指定结果始终为整数值等于0或1
6.5.8关系运算符
如果指定的关系为真,则每个运算符<(小于),>(大于),<=(小于或等于)和> =(大于或等于)将产生1,如果是,则为0 false.92)结果的类型为int.
| 归档时间: |
|
| 查看次数: |
1601 次 |
| 最近记录: |