a = a++ % 2; ===????

[复制链接]
1708|7
 楼主| 心有所xiang 发表于 2013-10-31 11:26 | 显示全部楼层 |阅读模式
  1. #include <stdio.h>

  2. static int a = 0;
  3. int b = 20;
  4. int main()
  5. {
  6.         do
  7.         {
  8.                 //a++;
  9.                 a =  a++ % 2;
  10.                 printf("a = 0x%x\n",a);
  11.         }
  12.         while(b--);
  13.         return 0;
  14. }
请解释下,,,卡带了。。。。谢谢。
香水城主 发表于 2013-10-31 11:38 | 显示全部楼层
输出20次 a=0x0
ayb_ice 发表于 2013-10-31 11:40 | 显示全部楼层
不要写这种怪异的代码
NE5532 发表于 2013-10-31 12:01 | 显示全部楼层
不要写出自己不懂,机器也不知道会怎么执行的代码——谭浩强。

拆开来写,少玩一点技巧。
lhchen922 发表于 2013-10-31 13:06 | 显示全部楼层
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
a = 0x2
a = 0x1
Press any key to continue

vc6的结果,,优先级的问题吧。
黄小俊 发表于 2013-10-31 14:02 | 显示全部楼层
我觉得不管什么优先级,一概有括号。。
diweo 发表于 2013-10-31 14:57 | 显示全部楼层
这个地方就算加括号也没用。
a=a++%2,或者a=(a++)%2,都相当于a=a%2;a=a+1;
初值a=0,结果就是1,2,1,2。。。
陈安业 发表于 2013-10-31 16:06 | 显示全部楼层
你a%2的值始终不能超越极限跳出2,所以循环往复的1,2,1,2,。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

12

帖子

0

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