[其他] C问题

[复制链接]
704|6
 楼主| BettyBerry 发表于 2020-10-17 14:47 | 显示全部楼层 |阅读模式
  1. int m=0, n=2, k=1;
  2. k = (m++)&&(++n);
  3. printf("%d, %d, %d", k, m, n);

这里为什么输出的n是2.并没有改变

评论

第二项是算术与还是逻辑与?  发表于 2020-10-20 09:04
fair2817 发表于 2020-10-18 23:47 来自手机 | 显示全部楼层
本帖最后由 fair2817 于 2020-10-18 23:56 编辑

执行m++时,是后置++运算符,是使用m的0值参与运算后加了1。在m使用0进行与逻辑运算时,由于m为0时为假,逻辑结果直接为假,后面的++n不会被执行。最后的结果就是k为0,m为1,n为2。有三种解决方案,一是把m改为非0;二是将++n与m++调换位置;三是将m++改为++m。
x史可法 发表于 2020-10-20 21:43 | 显示全部楼层
&&时前面已经0就没必要运行后面++n
kaloulin 发表于 2020-10-22 10:59 | 显示全部楼层
楼主把m++改为++m试下
734774645 发表于 2020-10-28 21:42 | 显示全部楼层
纠结这个没必要吧,写代码时候不要这么写就是了。
laocuo1142 发表于 2020-11-26 15:27 | 显示全部楼层

楼主把m++改为++m试下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

162

帖子

0

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