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;
页: [1]
查看完整版本: 为什么写法二的写法不行呢?