哪位高手能我解释一下,关于C语言的自加和自减,越详细越好。

作者&投稿:越黄 (若有异议请与网页底部的电邮联系)

自增(自减类同,以下只以"自增"为例)运算需要留意的一个主要关键点即是前自增(++i)和后自增(i++)的区别,大致说来,二者的区别如下:

1) 前自增是"先完成自增,后参与表达式运算"的;后自增却恰恰相反,于是会产生如下区别:

int i = 0;
printf("%d", i);      // 输出 0
printf("%d", ++i);    // 输出 1,此句执行后 i 的值为1
printf("%d", i);      // 输出 1
printf("%d", i++);    // 输出 1,此句执行后 i 的值为2
printf("%d", i);      // 输出 2

产生如上差别的原因正是:在第五行中,i 是先参与了printf语句输出,后完成自增运算的。


2) 如果你了解如上代码编译到汇编级别后的代码便会知道为何前自增与后自增会有如上差别,同时也会注意到之二者的另一个重要差别便是前自增运算的内存开销和时间开销均要少于后自增运算,这也是为什么在循环中,如果有自增运算,我们更提倡使用前自增。

不过这一点现在已经很少被提到了,一方面由于现代计算机的性能不断提升,多数情况下已经不需要考虑之二者这一点点差别了;另一方面,某些现代智能型的编译器,会在编译时自动替你完成这个优化工作的。



i++,++i 减跟加意义是一样的,只举例加的就行了
i++ ==>调用i,处理完之后i=i+1;如i=4;printf("%d\n",i++);输出的是4,可是i=5
++i ==>i=i+1,然后调用i;如i=4;printf("%d\n",++i);输出的是5,同时i=5

C语言基本代码,求详细解释,越详细越好。~

解释如下:
#include"stdio.h"//头文件
#include"math.h"//数学库函数
double pcos(double a);//声明子函数
main()//主函数
{
double x,y;//定义x,y这两个双精度数据
printf("please input one number:");
//输出please input one number:
scanf("%lf",&x);//出入一个数据并赋值给x
y=pcos(x);//把x传入pcos函数,返回值赋值给y
printf("cos of %lf is %lf
",x,y);//输出cos of x is y
}
double pcos(double a)//定义子函数名,形式参数
{
double b;//定义双精度数据b
b=cos(a);//计算cos(a),并赋值给b
return b;//返回b的值
}

扩展资料:注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。
注释就是对代码的解释和说明。目的是为了让别人和自己很容易看懂。为了让别人一看就知道这段代码是做什么用的。
正确的程序注释一般包括序言性注释和功能性注释。序言性注释的主要内容包括模块的接口、数据的描述和模块的功能。模块的功能性注释的主要内容包括程序段的功能、语句的功能和数据的状态。
参考资料:注释–百度百科

值的传递不影响实参最后输出
引用才会改变实参

K%2=1 不等于0 条件满足(%是取余)

给n指向的地址赋值为j

C语言程序设计 我是C语言初学者,有一道看程序的题我有些弄不懂,还请...
答:答案:C A:是如果a>b,则一程序一直执行到“b=c;”,效果是换a与b的值;B:是如果a>b,则执行{ }里的语句,效果是交换a与b的值;C:是如果a>b,则执行c=a; 无论a是否大于b,c的值都要给a,a-b;没什么作用;D:是如果a>b,则效果是交换a与b的值,c相当于中转站,a-b;没什么...

...m++和++m的区别在哪里?哪位高手能给解释一下吗?最好能举一个例子...
答:m是变量,m++是指先将m的值进行比较或其他过程,然后将m的值+1赋给m;++m是指先将m的值+1赋给m,然后将赋值后的执行某个过程。

哪位c语言高手帮忙解释一下2和5是什么意思,或者给个运行结果。不理解这...
答:2 就是所有的数据要保存在文件里面。 下次运行的时候要读文件。 而不是退出了就什么都没了。5 需要输出各种提示,比如 输入1 录入, 输入2查看, 输入3统计什么的。

求高手解释一下这段C语言程序。。。
答:以下是程序的注释 float c(){ float sumc;//定义存储结果的浮点型变量 char k[20],i=0;//定义存储临时变量的字符数组k[]和循环变量i,i用于k数组中元素的定位 while(isdigit(r[n])||r[n]=='.')//如果r[n]中所存的字符属于浮点数的一部分 { while(isdigit(r[n])||r[n]=='.'...

...将一个正整数分解质因数,望高手帮我详细解释一下程序?
答:1、首先打开vc6.0, 新建一个vc项目,添加头文件。2、添加main主函数,如下图所示。3、然后定义 n, i 两个变量,如下图所示。4、接着使用scanf给n赋值,使用for循环。5、然后用while作为内层循环,使用printf打印i。6、最后使用if条件语句,运行程序,如下图所示,正整数分解为质因子就完成了。

c语言的问题 请高手给解释一下
答:如果是把a赋值为-2的话,输出对应应该就是4294967294,而把a赋值为4294967296的话,输出应该就是0.printf("2:%d,%d,%ld,%ld\n",b,b,b,b);//我的32位系统输出都是32767.printf("3:%d,%d,%ld,%ld\n",c,c,c,c);//我的32位系统输出都是32768,如果输出-32768的话,那也是溢出问题.} ...

我是C语言新手。求大神解释一下这一道题,书里没解析的额
答:首先main函数里定义个结构体类型 struct cmplx该结构体包含两个成员变量x和y。cnum是结构体类型的数组,数组中有2个数组元素cnum[0]和cnum[1],每个数组元素都是结构体类型的变量。所以 cnum[0].x=1,cnum[0].y=3;cnum[1].x=2,cnum[1].y=7;则cnum[0].y/cnum[0].x*cnum[1]....

谁给我解释一下以下c语言代码!ps:新手,求大神指教
答:='\0';i++){ //一个个取出字符,直到字符串结束 if(c==' ')word=0; //如果碰到空格,表明单词结束,准备下一个单词 else if(word==0){ //如果到下一个单词了 num++ 计数 word=1; num++; } } printf("there are %d words in the line.\n",num)...

有没有人能帮我讲解一下这个C语言程序的执行过程?
答:include"stdio.h"main(){ char s[80];int i,j;gets(s);for(i=j=0;s[i]!='\0';i++)//这里只有i++,j++在下面,j不随for循环自加1 if (s[i]!='c')s[j++]=s[i];//每有一个不为'c'的单位出现,j自加1;并且该单位的值,重新赋值给数组s,从s[0]开始,因为j初值为...

...term ...好多的单词都看不懂,请高手给我解释一下,谢谢了!
答:对里面出现的单词(sign,deno,sum等)其实只是一个变量的标识,就像人的名字一样,你也可以把他们替换成a,b,c等都可以。但是在编程规范中为了第一眼看到这个变量代表什么意思 而这样命名。比如:deno: denominator,分母 sum:summation,和 term:temporary,临时的 这样一看就知道这个变量是什么了。这...