[其它应用] 为什么写法二的写法不行呢?

[复制链接]
 楼主| bqyj 发表于 2021-2-17 21:26 | 显示全部楼层 |阅读模式
在Keil的环境下写法1的写法可以正常工作,写法二的写法不行呢?写法1:
                    if(Timg_500ms_flag)
                       Timg_500ms_flag=0;
                    elseKeilggi
                       Timg_500ms_flag=1;
写法2:
                ~Timg_500ms_flag;
补充一下:
        仿真器:JET51
           器件:SH79F083A
zhuhuis 发表于 2021-2-17 21:29 | 显示全部楼层
写法2取反之后都没赋值,LZ赶紧复习下C语言吧
wenfen 发表于 2021-2-17 21:31 | 显示全部楼层

C没有这种写法,一般取反也不这样用。你这个取反可能会根据单片机位数不同导致不同的结果。
tian111 发表于 2021-2-17 21:34 | 显示全部楼层
正规的写法是, 置位Flag |=(1<<n),复位 Flag &=~(1<<n),取反 Flag ^=(1<<n)。
songqian17 发表于 2021-2-17 21:39 | 显示全部楼层

改为:

Timg_500ms_flag= ~Timg_500ms_flag;
chenho 发表于 2021-2-17 21:47 | 显示全部楼层

Timg_500ms_flag=!Timg_500ms_flag;
bit位的取反也可以这么写。
wangpe 发表于 2021-2-17 21:49 | 显示全部楼层
C语言的基本语法问题
zhuww 发表于 2021-2-17 21:52 | 显示全部楼层
取完反后,你复制给谁?
 楼主| bqyj 发表于 2021-2-17 21:54 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家
huanghuac 发表于 2021-2-17 21:57 | 显示全部楼层
C语言的基本语法问题
 楼主| bqyj 发表于 2021-2-17 21:58 | 显示全部楼层
取完反后,你复制给谁?
 楼主| bqyj 发表于 2021-2-17 22:01 | 显示全部楼层

哦,那我就知道怎么回事了,多谢大家
ayb_ice 发表于 2021-2-18 08:47 | 显示全部楼层
标准写法 Timg_500ms_flag= !Timg_500ms_flag;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

390

主题

4526

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部