C语言易错知识
发布日期:2021-05-04 09:36:35 浏览次数:19 分类:技术文章

本文共 375 字,大约阅读时间需要 1 分钟。

C语言易错知识

!和 ~ 不一样

! 是逻辑非符号,~ 是位取反符号。

<<和>>的优先级低于+、-

比如要实现c=x*2+1,没有加括号会出错。

移位要防止溢出

其实用移位代替乘除法是个不错的方法,笔者很喜欢拿到一段代码后用移位代替乘除法来进行优化。不过有时候却会出现问题,比如溢出问题。当很明显可能溢出的话我们是会注意的。但是有时候这个问题是不明显的,比如当移位出现在数组索引或函数参数时。我们可以用左移运算来代替乘法进行优化。

无符号数和有符号数混合运算都会被强制转换为无符号数运算

当一个有符号数和一个无符号数进行算术运算时,系统会自动将有符号数强制转换为无符号数再进行运算(即使你使用有符号数强制类型转换)

局部变量要初始化

局部变量没有初始化的话,因为单片机每次为他分配的是同一个内存区域,当你在函数中是这么使用局部变量时,就可能出问题:

上一篇:C语言随机数
下一篇:C语言的补码

发表评论

最新留言

不错!
[***.144.177.141]2025年03月11日 03时58分31秒