怎样优化Keil switch语句属于什么语句句

 错误现象:stm32单步调试发现在can初始囮后配置完can滤波器后can错误寄存器ESR立马检测到错误,但是can的errorcode为0

找了一块正常的板子在线调试正常的情况下在can初始化滤波器配置后can的ESR寄存器应该都是0的。因此定位到硬件错误在换了光耦、换了TJA1050后问题依旧。于是开始怀疑是MCU的问题将TJA050取下,can路悬空的情况下在线debugcan错误寄存器ESR还是不为0,这就说明是MCU的问题了换掉MCU重新烧程序OK了! 

总结:一直听说市场上有翻新MCU坑惨嵌入式软件工程师的情况,不知道这次是不是Φ奖了就算是全新的MCU也不能保证100%的正常。这次为了排查错误还专门写了个只有can接口的程序前前后后一共花了3天时间,如何在软件中检測MCU是否正常以减少这种坑爹的情况再次发生, 以后需要留意着方面的信息

}

case后面只能跟一个值(加冒号:)而鈈能是一个表达式

{}前后没有;(分号)

  只能针对基本数据类型使用switch,这些类型包括int、char等对于其他类型,则必须使用if语句

case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值

不要问为什么,C就这规定!我们只需要了解规则学会应用即可!

猜想原因:浮点型數据不是准确的数据,在机器中只能表示出一个近似值如:0.1 在机器中存的是0..... 也可能是0..... 根据精度不同,数据来源不同其值是个不确定的數据,因此不能用CASE来定位

格的说这不是错误,因为是有这种用法的switch语句属于什么语句句括号内的表达式可以是整型或字符型,不能是float型。 如果你想输入像第一种那几个数可以把 items 乘2再强制转换成整形case后分别写0、2、3

switch语句属于什么语句句括号内的表达式可以是整型或字符型,c語言的语法规定你可以去看看

如果觉得case后面想判断整形以外的类型,还可以自己定义枚举类型

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

我要回帖

更多关于 switch语句属于什么语句 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信