找回密码
 立即注册
查看: 768|回复: 6

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-27 17:31:40

7

主题

29

回帖

175

积分

注册会员

积分
175
发表于 2023-4-9 19:55:47 | 显示全部楼层 |阅读模式
学习试验箱9.4的时候,keil5编译遇到了警告,想要请教一下,为什么会出现这个警告-1.png
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-03-09 19:40:01

9

主题

328

回帖

4501

积分

荣誉版主

积分
4501
发表于 2023-4-9 20:25:30 | 显示全部楼层
试试直接写0x7F吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-27 17:31:40

7

主题

29

回帖

175

积分

注册会员

积分
175
发表于 2023-4-9 20:27:46 | 显示全部楼层
kk*** 发表于 2023-4-9 20:25
试试直接写0x7F吧

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-03-09 19:40:01

9

主题

328

回帖

4501

积分

荣誉版主

积分
4501
发表于 2023-4-9 20:41:57 | 显示全部楼层
hyl,*** 发表于 2023-4-9 20:27
直接写0X7F,就没有报错。我就是好奇,按照我上面图片写法~为什么会出现warnning ...

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-27 17:31:40

7

主题

29

回帖

175

积分

注册会员

积分
175
发表于 2023-4-9 20:57:52 | 显示全部楼层
kk*** 发表于 2023-4-9 20:41
想了一下,8051默认的int是16位的,也就是这里的(1

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-03-09 19:40:01

9

主题

328

回帖

4501

积分

荣誉版主

积分
4501
发表于 2023-4-9 21:22:50 | 显示全部楼层



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

Screenshot 2023-04-09 212047.png

Screenshot 2023-04-09 212153.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-27 17:31:40

7

主题

29

回帖

175

积分

注册会员

积分
175
发表于 2023-4-10 01:40:04 | 显示全部楼层
kk*** 发表于 2023-4-9 21:22
事实上,和桌面端的C语言编译器不同,就算你这样写,Keil都是不会有任何提示的
而桌面端的C语言编译器 ...

好的~谢谢
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 03:58 , Processed in 0.130218 second(s), 92 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表