跟esionhow学C语言编程!问题1 ++i与i++

esionhow 2009-01-31 05:33:26
#include <stdio.h>

main()

{
int a=3,b,c,i=10;
b=a++;
c=++b;

printf("a = %d, b = %d ,c = %d\n",a,b,c); /*问题1:为什么a=4,b=4,c=4呢*/ 应该是:a=3,b=4,c=5啊。

printf("i,i++,++i=%d,%d,%d\n",i,i++,++i);/*问题2:为什么i,i++,++i=12,11,11呢*/ 应该是:10,11,12啊

printf("++i=%d\n",++i); /*问题3:为什么++i=13呢*/
printf("--i=%d\n",--i);
printf("i++=%d\n",i++);
printf("i--=%d\n",i--);
printf("-i++=%d\n",-i++);
printf("-i--=%d\n",-i--);
getchar();
getch();
}



输出结果为:

a=4,b=4,c=4

i,i++,++i=12,11,11

++i=13

--i=12

i++=12

i--=13

-i++=-12

-i--=-13



我是菜鸟,请好心人答复。谢谢
...全文
141 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanzengguang 2009-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 waizqfor 的回复:]
C/C++ code#include<stdio.h>main()

{inta=3,b,c,i=10;
b=a++;//a先赋值给b 然后++操作 ;语句结束之后b=3 a=4c=++b;//b先++操作 此时b=4 然后把值赋给c 所以C=4printf("a = %d, b = %d ,c = %d\n",a,b,c);

printf("i,i++,++i=%d,%d,%d\n",i,i++,++i);//这个地方应该跟你编译器有关系 printf的运算是从右向左看的 也就 先看++i i++ i//++i先进行操作 这时i=11 i++是后++所以先输出 我拿VC6得到的结果是11 11 11printf…
[/Quote]

应该是12 11 11吧
thinkboy234 2009-02-01
  • 打赏
  • 举报
回复
int a=3,b,c,i=10;
b=a++;
c=++b;

printf("a = %d, b = %d ,c = %d\n",a,b,c);

a++是先执行a也就是说再分号以前a一直等于3.这句结束后就是4了。
因为再这句里一直是3所以就把3赋给b了。
++b(加号在前面)是在执行这句之前先把b加1(这时b就等于4了)然后再执行语句。所以就把4赋给c了,所以c=4
wuerbuer 2009-02-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 waizqfor 的回复:]
C/C++ code
#include <stdio.h>

main()

{
int a=3,b,c,i=10;
b=a++;//a先赋值给b 然后++操作 ;语句结束之后b=3 a=4
c=++b; //b先++操作 此时b=4 然后把值赋给c 所以C=4

printf("a = %d, b = %d ,c = %d\n",a,b,c);

printf("i,i++,++i=%d,%d,%d\n",i,i++,++i);//这个地方应该跟你编译器有关系 printf的运算是从右向左看的 也就 先看++i i++ i
//++i先进行操作 这时i=11 i++是后++所以先输出 我拿VC6得到的结果是11 11 11

[/Quote]
费解的说,按一楼帅哥所言,VC6在上面省略号前一句(就是:printf("i,i++,++i=%d,%d,%d\n",i,i++,++i);//这个地方应该跟你编译器有关系 printf的运算是从右向左看的 也就 先看++i i++ i
//++i先进行操作 这时i=11 i++是后++所以先输出 我拿VC6得到的结果是11 11 11 )的输出应为12,11,11才是……
na2650945 2009-01-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 waizqfor 的回复:]
C/C++ code
#include <stdio.h>

main()

{
int a=3,b,c,i=10;
b=a++;//a先赋值给b 然后++操作 ;语句结束之后b=3 a=4
c=++b; //b先++操作 此时b=4 然后把值赋给c 所以C=4

printf("a = %d, b = %d ,c = %d\n",a,b,c);

printf("i,i++,++i=%d,%d,%d\n",i,i++,++i);//这个地方应该跟你编译器有关系 printf的运算是从右向左看的 也就 先看++i i++ i

[/Quote]
正解。
esionhow 2009-01-31
  • 打赏
  • 举报
回复
谢谢你的帮助。万分感谢
waizqfor 2009-01-31
  • 打赏
  • 举报
回复

#include <stdio.h>

main()

{
int a=3,b,c,i=10;
b=a++;//a先赋值给b 然后++操作 ;语句结束之后b=3 a=4
c=++b; //b先++操作 此时b=4 然后把值赋给c 所以C=4

printf("a = %d, b = %d ,c = %d\n",a,b,c);

printf("i,i++,++i=%d,%d,%d\n",i,i++,++i);//这个地方应该跟你编译器有关系 printf的运算是从右向左看的 也就 先看++i i++ i
//++i先进行操作 这时i=11 i++是后++所以先输出 我拿VC6得到的结果是11 11 11

printf("++i=%d\n",++i); //这里还是一样++i 先做++操作 之前的i做了两次++ 操作(上面printf中) 所以这里再++ 就等于13
printf("--i=%d\n",--i);
printf("i++=%d\n",i++);
printf("i--=%d\n",i--);
printf("-i++=%d\n",-i++);
printf("-i--=%d\n",-i--);
getchar();
getch();
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧