为了账号安全,请及时绑定邮箱和手机立即绑定

急急急求大神

为什么printf("%d\n",a+1);不改变a的值


正在回答

4 回答

因为只有自增自减才会改变a的值

printf("%d\n",a+1)的输出结果是101的原因是%d指的是a+1整体。

如果第五步改变a的值,那么第六步的输出结果就不是100了。

不知道我说清楚了吗?

0 回复 有任何疑惑可以回复我~

#include <stdio.h>

int main()

{

    int a = 100;

    printf("x=%d\n",a++);//先取值100 下一段再运算+1。所以这段的 答案是100

    printf("x=%d\n",++a);//先运算上一段剩下的(100+1)在运算这一段的a+1,所以公式是(100+1)+1=102,答案是102

    printf("x=%d\n",--a);//先运算在取值(-1)+102=101 答案是101

    printf("x=%d\n",a--);//先取值 101 再下一段运算101 -1   所以这段 答案是101

    printf("x=%d\n",a+1);// 先运算上一段剩下的101-1 在运算这一段 ,所以公式是(101-1)+1=101  答案是101  注意;这里并不改变a的值,也就是说这一段是单纯的+1并不影响第8段运算完的结果a=(101-1),所以a还是100 然后在这段中+1

    printf("x=%d\n",a);//第9段说明a还是100

    return 0;//

}        /*   5.   100

              6.   102    

              7.   101

              8.   101

              9.   101

              10.  100    */


2 回复 有任何疑惑可以回复我~
#1

幕布斯1309840

eg:也就是说这一段是单纯的+1并不影响第8段运算完的结果a=(101-1),所以a还是100;我感觉你好像思路不对, #include <stdio.h> int main() { int a = 0; printf("x=%d\n",a++); printf("a=%d\n",++a); printf("a=%d\n",a+1); printf("a=%d\n",a); return 0; } 这是我做的试验,这个a+1结果就是3,是有影响的,请教,我也在眩晕中
2016-08-28 回复 有任何疑惑可以回复我~
#2

幕布斯1309840

#include <stdio.h> int main() { int x = 0; printf("x=%d\n",x--); printf("x=%d\n",--x); printf("x=%d\n",x+1); printf("x=%d\n",x); return 0; }
2016-08-28 回复 有任何疑惑可以回复我~

它输出的还是a的值,

0 回复 有任何疑惑可以回复我~

符号在后面,先取值再赋值,所以printf是a的值


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

急急急求大神

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信