hyl,co! 发表于 2023-4-9 19:55:47

学习试验箱9.4的时候,keil5编译遇到了警告,想要请教一下,为什么会出现这个警告


kksk 发表于 2023-4-9 20:25:30

试试直接写0x7F吧

hyl,co! 发表于 2023-4-9 20:27:46

kksk 发表于 2023-4-9 20:25
试试直接写0x7F吧

直接写0X7F,就没有报错。我就是好奇,按照我上面图片写法~为什么会出现warnning

kksk 发表于 2023-4-9 20:41:57

hyl,co! 发表于 2023-4-9 20:27
直接写0X7F,就没有报错。我就是好奇,按照我上面图片写法~为什么会出现warnning ...

想了一下,8051默认的int是16位的,也就是这里的(1<<7)结果是0x0080,取反后是0xFF7F,显然在任何情况下都不可能与8位的sfr中的值相等
确实,平时在开发时很容易误认为int是8位

hyl,co! 发表于 2023-4-9 20:57:52

kksk 发表于 2023-4-9 20:41
想了一下,8051默认的int是16位的,也就是这里的(1

LED=~(1<<7);~这个是我写的一个语句,LED定义位unsigned char型.
按照你的说法的话,这个也应该出现warnning,但是这个LED=~(1<<7);语句没有出现warnning

kksk 发表于 2023-4-9 21:22:50

hyl,co! 发表于 2023-4-9 20:57
LED=~(1



事实上,和桌面端的C语言编译器不同,就算你这样写,Keil都是不会有任何提示的
而桌面端的C语言编译器则会给出warning(此处为gcc)





hyl,co! 发表于 2023-4-10 01:40:04

kksk 发表于 2023-4-9 21:22
事实上,和桌面端的C语言编译器不同,就算你这样写,Keil都是不会有任何提示的
而桌面端的C语言编译器 ...

好的~谢谢
页: [1]
查看完整版本: 学习试验箱9.4的时候,keil5编译遇到了警告,想要请教一下,为什么会出现这个警告