主题:C语言高手进下~~赋值语句 我有点不懂的地方
skyruyi
[专家分:0] 发布于 2006-07-26 11:23:00
昨天 C语言我学到了 赋值语句 后来我看到 自增自减运算符 有一个例题我看不懂 我不知道他为什么算出来不是12 而是9 你帮我 看看哈 最好可以把它的运算步奏 写给我 ~~~谢谢 你了
程序一;
main()
{
int j,i=3;
j=(i++)+(i++)+(i++);
printf("%d",j);
} 结果为什么是9
程序二 ;
main()
{
intj,i=3;
j=(++i)+(++i)+(++i);
printf("%d",j);
结果是18 我怎么算 也不是18 啊 迷糊
程序三
main()
{
int a=100;
printf("a++=%d\n",a++); 这些什么意思啊
printf("++a=%d\n",++a); 我看每个程序都有
printf("a--=%d\n",a--); 这些东西 但每个
printf("--a=%d\n",--a); 意思都不一样,
输出结果 我用什么方法一看就
a++=100 知道这些是什么意思
++a=102 呢???
a--=100
--a=102
为什么会是这个结果啊 我不懂什么, 意思
以上的问题 希望 你帮我 看看
在告诉我为什么哈 谢谢你 哟 [em10][em10][em10][em10][em10]
回复列表 (共60个回复)
沙发
usojay123 [专家分:50] 发布于 2006-07-26 11:44:00
程序一;
main()
{
int j,i=3; //定义j,i是整数型,定义i初始化为3
////////////////////////////////////////////
j=(i++)+(i++)+(i++); //j= (3+1)+(3+1)+(3+1)
//但是j++是先把i的值给j在i+1
//也就是j=3+3+3
///////////////////////////////////////////
printf("%d",j); //打印j
}
我解释得对吗~~C++我刚刚学了10几天。。我解释错了别丢我鸡蛋,对我多提点意见和建议
板凳
skyruyi [专家分:0] 发布于 2006-07-26 11:52:00
那程序二 ;
main()
{
intj,i=3;
j=(++i)+(++i)+(++i);
printf("%d",j);
结果是18 我怎么算 也不是18 啊 迷糊
为什么是18呢
3 楼
usojay123 [专家分:50] 发布于 2006-07-26 11:59:00
那程序二 ;
main()
{
intj,i=3;
j=(++i)+(++i)+(++i);
printf("%d",j);
}
我试过拉~~用VC++调试。应该得16``楼主是不是你搞错拉
4 楼
usojay123 [专家分:50] 发布于 2006-07-26 12:02:00
那程序二
为什么得16.........我有点晕了
不是先把i+1了然后赋值给j吗
那不就是j=(3+1)=4
j=4+(3+1)=8
j=4+4+(3+1)=12
还有个4是哪来的。。。
5 楼
skyruyi [专家分:0] 发布于 2006-07-26 12:03:00
书上写的是 结果是 18 啊
6 楼
usojay123 [专家分:50] 发布于 2006-07-26 12:06:00
你自己实践下啊`~书上不一定是对的。。。我有好几本电子书里都有错
害得我10几天来学的东西全有问题
最好要自己实践下,用编程器试下是什么结果
7 楼
skyruyi [专家分:0] 发布于 2006-07-26 12:08:00
我 觉的是
j=(++j)+(++j)+(++j)
是不是先给3+1=4 在给4+1=5 在给5+1=6 最后i 就等于6 拉
然后j= 6+6+6=18 哈
8 楼
usojay123 [专家分:50] 发布于 2006-07-26 12:11:00
难道另外的一个4是从j里面来的/??
9 楼
usojay123 [专家分:50] 发布于 2006-07-26 12:12:00
可是你用编辑器试下`得出的结果是16不是18
10 楼
usojay123 [专家分:50] 发布于 2006-07-26 12:13:00
i是永远不变的`一直是3`~不过++i是把i+1了才=4
我来回复