回 帖 发 新 帖 刷新版面

主题:C语言高手进下~~赋值语句 我有点不懂的地方

昨天 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 楼

#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 楼

++ -- 在变量的前面就是先给变量+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 楼

i是等于6`~没错j是等于9
都叫你实践一下拉`~把代码搞到编程器里调试
电脑是不会骗你的

14 楼

加下我Q:123034782
我们聊下

15 楼

++i就是先自行加后再赋值!第一个i等于4,第二个i加后就等于5了!因为,第一个i已经自加过了!这样推下去第三个i自加后就等于6了!
三个相加等于15!!!但是为什么等于16,因为,前两个相加等于10,(嘿嘿,知道为什么吗???)把优先级搞明白了!!!看书!
明白了???

16 楼

#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 楼


语句的意思就是:
     i++就是在有别的语句运行时,运行完后再进行增加赋值,既i+1,
     而++i就是说,i的值在运行之前就默认的加1,这个就是第一个为什么等于18的原因.
 这里面还有欠缺的很多的东西,您需要慢慢的来学习,多思考,多问,那样你学起来会比较简单,好上手,多努力吧,弟弟

18 楼

大家好!
    我是新手,我自己用VB编了一个工具,可我想学编C++,可就是英语不好。
如果谁想看看我用VB编的一个小工具可以加我QQ605693089,希望和大家一起努力学习!

19 楼

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 楼


程序二 的结果就是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;

我来回复

您尚未登录,请登录后再回复。点此登录或注册