在学习STM32的时候遇到一个很奇怪的warning
乍一看这就是一个很常见的定义变量且赋值的语句,感觉没有什么毛病。但是仔细看这是一个u8类型的变量,并且编译显示整数转换导致了符号的改变。所以问题应该就是变量的类型混淆所造成的。
咱们深入keil内部去看看u8的本质是什么:
这样就很明显了,u8-->uint8_t-->unsigned char;
所以编译出现整数转换导致了符号的改变的问题也就能理解了,因为这个变量类型按理来说是没有符号的,所以如果想要解决这个问题,只用把本例中result的初值改为正数就好。
那为什么同样的东西,设计者要采用这么多名字呢?
其实一方面就是为了程序员在编写代码的时候能最大程度的简化,这对于编程人员是友好的;另一方面是由于产品的不断更新迭代需要,考虑到兼容性不得不这么做。
咱们对于这些也不用特别恐惧,只用记住基本常用的就好。
u8 --> unsigned char
u16 --> unsigned short文章来源:https://www.toymoban.com/news/detail-471112.html
u32 --> unsigned int文章来源地址https://www.toymoban.com/news/detail-471112.html
到了这里,关于warning: #68-D: integer conversion resulted in a change of sign的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!