永发信息网

C语言中不是把"="右边的值附给左边了?

答案:5  悬赏:20  手机版
解决时间 2021-02-09 02:15
为什么#include #include int main(void){int i=3; i=i++; printf("%d\n",i);}打印出来的结果是4?单独打印i++的结果应该是3的(新手)
最佳答案
这样给你讲吧
// i++ 是先把 i作为 表达式的值, 然后将i的值加1
i = i++ ; // 可以这样看 i = a; a = i++; 此时 i 的值 依然是3
执行完之后 i的值 在 +1;

你上面的代码 和下面的 一个效果
int i = 3;
i++;
printf("%d\n", i);
全部回答
a = b++ 是先把右边的b的值赋值给左边的a 然后右边的b再自加一。 应为a和b都指向同一个变量,所以i = i++执行完了之后i的值等于4了 单独打印i++,实际上就是i先把值传给printf然后再加一,所以打印的结果为3
% 就是求余计算,左右两边必须是整数。 所谓求余就是 a除以b = c 余d ,d就是%的结果 当a
  • 3楼网友:玩家
  • 2021-02-08 13:21
i = i++; 你改成 int j = i++; 就没那么多问题了。。 -------------------------- 主要还是你用的是同一个i才有这么多绕。。
  • 4楼网友:英雄的欲望
  • 2021-02-08 12:16
这是C语言不同于人们习惯的地方。 C语言 有 前缀加加++i 和 后缀加加i++. 前缀加加++i,i要先增1,再用于表达式。 后缀加加i++,表达式的i不增加1,直接用于表达式,出了表达式再增1。 也就是 i=i++; 分解为: i=i; i=i+1; 两句。 i= ++i; 分解为: i=i+1; i=i; 两句。 -- 单独打印i++, 就是: i=i; printf("%d\n",i); i=i+1; 结果是3
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯