主题: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个回复)
11 楼
usojay123 [专家分:50] 发布于 2006-07-26 12:18:00
#include <stdio.h>
/////////////////////////////////////////
//The main()function.
/////////////////////////////////////////
main()
{
int a=100;
printf("a++=%d\n",a++); //打印:a++=a,其中的%d应该是紧接在后面打印把,\n是回车符
printf("++a=%d\n",++a); //后面的我不懂了- -
printf("a--=%d\n",a--);
printf("--a=%d\n",--a);
}
12 楼
skyruyi [专家分:0] 发布于 2006-07-26 12:18:00
++ -- 在变量的前面就是先给变量+1或-1然后再返回值,相反如果在变量的后面就是先返回值然后再给变量+1或-1
比如第一个程序:
int j,i=3;
j=(i++)+(i++)+(i++);
printf("%d",j);
++在i的后面,先给其返回值i=3,所以j=3+3+3=9,之后再给i加1加1加1,i变为6。
着是我问别人 人家给我的答案
13 楼
usojay123 [专家分:50] 发布于 2006-07-26 12:21:00
i是等于6`~没错j是等于9
都叫你实践一下拉`~把代码搞到编程器里调试
电脑是不会骗你的
14 楼
usojay123 [专家分:50] 发布于 2006-07-26 12:28:00
加下我Q:123034782
我们聊下
15 楼
chenxinyi11 [专家分:180] 发布于 2006-07-26 17:01:00
++i就是先自行加后再赋值!第一个i等于4,第二个i加后就等于5了!因为,第一个i已经自加过了!这样推下去第三个i自加后就等于6了!
三个相加等于15!!!但是为什么等于16,因为,前两个相加等于10,(嘿嘿,知道为什么吗???)把优先级搞明白了!!!看书!
明白了???
16 楼
ncys1596 [专家分:80] 发布于 2006-07-27 02:01:00
#include<iostream.h>
void main()
{
int j, i = 3;
int u, f, o;
j= (u = (i++)) + (f = (i++)) + (o = (i++));
cout << u << f<< o << endl;
}
这道题结果是9,i++没有自加,你用的是VC++6.0工具的话可以按F10一步一步看运算结果!
#include<iostream.h>
main()
{
int j,i=3;
int u,f,o;
j=(u=(++i)) + (f=(++i)) + (o=(++i));
}
这道题结果是15,第一个++i是4,第二个++i是在第一个++i上再加1,也就是5,所以第三个是6,加起来15,为什么会有16我就不知道了哦!
至于第三题,是关于一些输出的东东,随便看看书就知道了!
17 楼
刚入门的小李 [专家分:0] 发布于 2006-07-27 09:18:00
语句的意思就是:
i++就是在有别的语句运行时,运行完后再进行增加赋值,既i+1,
而++i就是说,i的值在运行之前就默认的加1,这个就是第一个为什么等于18的原因.
这里面还有欠缺的很多的东西,您需要慢慢的来学习,多思考,多问,那样你学起来会比较简单,好上手,多努力吧,弟弟
18 楼
独七夜游 [专家分:60] 发布于 2006-07-27 15:56:00
大家好!
我是新手,我自己用VB编了一个工具,可我想学编C++,可就是英语不好。
如果谁想看看我用VB编的一个小工具可以加我QQ605693089,希望和大家一起努力学习!
19 楼
freeeerf [专家分:5440] 发布于 2006-07-27 22:22:00
Strictly speaking.These codes are all wrong.
Only stupid old chinese teachers use these stupid codes to faze their young students.
A good program won't use these codes.
20 楼
zsyhehe [专家分:0] 发布于 2006-07-29 09:29:00
程序二 的结果就是18。
main()
{
int j,i=3;
j=(++i)+(++i)+(++i);//i开始被赋值为3,经过
printf("%d",j);
}
我是这样理解的:
j=(++i)+(++i)+(++i);//i开始被赋值为3,经过第一个"++i" i的值成为4,但没有参加运算,同理,经过第二个"++i" i = 5 ,也没有参加运算,直到执行完最后一个"++i" 时,才参加运算,即i=6。所以 j=6+6+6=18
我用Win-tc调试的结果也正是18。即如果:
j=(++i)+(++i)+(++i)+(++i);
依此算出的结果应该是7+7+7+7=28;
我来回复