Ⅰ 什么是C语言中关于自加自减
自增分前缀自增和后缀自增。无论是什么,执行自增都有1个副作用,就是原来变量的值会增加1。例如int a=1;a++;或int a=1;++a;执行后,a==2。
而他们的区别就在于整个自增表达式的值不同。如(a++)的值是变量a自增以前的值,如上面例子,(a++)==1。而(++a)的值则是变量a自增以后的值,即(++a)==1+1==2。
结合性分为左结合和右结合,只有优先级相同时才看结合性,例如表达式a+b*c+d-e*f,因为乘法优先级别高于加减,所以a+(b*c)+d-(e*f),又因+-运算是左结合,所以只a+(b*c)再(a+(b*c))+d再(a+(b*c)+d)-(e*f),假如是右结合,就先d-(e*f),也就反过来了。这里其实看不出有什么区别,怎么样结果都一样。
但看到*p++运算就不同了,因为*与++运算同一优先级,左结合结果就是(*p)++,右结合就是*(p++),这是区别很大的,书上还很多例子,你可以自己去看的。
强制转换问题就是在可以转换的情况下按要求转换。如float x=9.9;
则(int)x==9。将实型转为整型是采用截掉小数部分的做法。
例如还可以整型转字符常量等等,例如,int a=97;则(char)a=='a',因为字符a的ASCLL码为97。
()里面即是你要转换的类型。
Ⅱ 编程中%怎么用
在C++中//是行注释的意思。
程序的注释是解释性语句,您可以在 C++ 代码中包含注释,这将提高源代码的可读性。所有的编程语言都允许某种形式的注释。
C++ 支持单行注释和多行注释。注释中的所有字符会被 C++ 编译器忽略。
C++中注释的种类:
1、单行注释:以双斜线(//)开始,以换行符结束。当前双斜线右侧的所有内容都会被编译器忽略。
2、界定符对注释:以/*开始,以*/结束,可以包含出*/外的任意内容,包括换行符。当注释界定符跨越多行时,最好能显式指出其内部的程序行都属于多行注释的一部分。
C++所采用的风格是,注释内的每行都以一个星号开头,从而指出整个范围都是多行注释的一部分。
(2)编程范围自加自减扩展阅读
编程符号种类:
1、算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2、关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3、逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4、位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5、赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6、条件运算符
这是一个三目运算符,用于条件求值(?:)。
7、逗号运算符
用于把若干表达式组合成一个表达式(,)。
8、指针运算符
用于取内容(*)和取地址(&)二种运算。
9、求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
10、特殊运算符
有括号(),下标[],成员(→,.)等几种。
Ⅲ 求问编程中自增自减运算符的运算规则
首先声明不同的编译器对于++运算的结果差异性很大,下面的解释仅仅针对你用的VC6.0;
1. 教科书上明确解释:++在前,则是先运算自加;++在后在在运行完当前运算后再进行自加;
2.你的第一个程序其中a=x+(x++)+(++x)可以分解为:
先执行a=x+x,此刻a=5+5=10
再执行x=x+1=6
然后执行a=10+x=10+6=16
然后自行x=x+1=7
3. 你的第二个程序中x=x+(x++)+(++x)可以分解为:
先执行x=x+x=5+5=10,但请注意,此时并没有真的赋值给x=10,因为当前主运算没有结束
然后执行x=x+1=6
然后执行x=10+x=10+6=16;请注意,当前运算结束,16被赋值给x,此刻x=16
然后执行++x,级x=x+1=16+1=17
再次声明,不同的编译器结果不同,我曾经验证过,例如在Tc2.0中a=x+(x++)+(++x)是这样解释的:
先执行++x,此时x=x+1=5+1=6
然后执行a=x+x+x=6+6+6=18
然后执行x++,此时x=7
这种东西理解一次就足够了,工作后基本不会用这种方式来写的,在学校里考这些东西,现实意义非常小。
Ⅳ c语言程序问题自加与自减
一个整数自身加一可以这样写:
a+=1;
它等价于a=a+1;。
但是在C语言中还有一种更简单的写法,就是a++;或者++a;。这种写法叫做自加或自增;意思很明确,就是自身加一。
相应的,也有a--和--a,叫做自减,表示自身减一。
++和--分别称为自增和自减运算符。
自增和自减的示例:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 10, b = 20;
printf("a=%d, b=%d\n", a, b);
++a;
--b;
printf("a=%d, b=%d\n", a, b);
a++;
b--;
printf("a=%d, b=%d\n", a, b);
system("pause");
return 0;
}
运行结果:
a=10, b=20
a=11, b=19
a=12, b=18
自增自减完成后,会用新值替换旧值,并将新值保存在当前变量中。自增自减只能针对变量,不能针对数字,例如10++是错误
的。
值得注意的是,++ 在变量前面和后面是有区别的:
++ 在前面叫做前自增(例如 ++a)。前自增先进行自增操作,再进行其他操作。
++ 在后面叫做后自增(例如 a++)。后自增先进行其他操作,再进行自增操作。
自减(--)也一样,有前自减和后自减之分。
请看下面的例子:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=10, a1=++a;
int b=20, b1=b++;
int c=30, c1=--c;
int d=40, d1=d--;
printf("a=%d, a1=%d\n", a, a1);
printf("b=%d, b1=%d\n", b, b1);
printf("c=%d, c1=%d\n", c, c1);
printf("d=%d, d1=%d\n", d, d1);
system("pause");
return 0;
}
输出结果:
a=11, a1=11
b=21, b1=20
c=29, c1=29
d=39, d1=40
a、b、c、d 的输出结果相信大家没有疑问,下面重点分析a1、b1、c1、d1:
1) 对于a1=++a,先执行++a,结果为11,再将11赋值给a1,所以a1的最终值为11。而a经过自增,最终的值也为11。
2) 对于b1=b++,b的值并不会立马加1,而是先把b原来的值交给b1,然后再加1。b原来的值为20,所以b1的值也就为20。而b
经过自增,最终值为21。
3) 对于c1=--c,先执行--c,结果为29,再将29赋值给c1,所以c1的最终值为29。而c经过自减,最终的值也为29。
4) 对于d1=d--,d的值并不会立马减1,而是先把d原来的值交给d1,然后再减1。d原来的值为40,所以d1的值也就为40。而d经
过自减,最终值为39。
可以看出:a1=++a;会先进行自增操作,再进行赋值操作;而b1=b++;会先进行赋值操作,再进行自增操作。c1=--c;和d1=d--;也
是如此。
Ⅳ 编程中关于自加自减得函数
int i=8;
cout<<i++<<endl; //++后缀,先取值再自增,i++=8,i=9
cout<<i--<<endl;//i--同上,先取值再自减,i--=9,i=8
cout<<++i<<endl;//++前缀,先自增再取值++i=9,i=9
cout<<--i<<endl;//--前缀,先自减再取值--i=8,i=8
cout<<-i++<<endl;//自增自减优先级高于负号的,所以,i++=8,i=9,-i++=-8
cout<<-i--<<endl;//i--=-9,-i--=-9
Ⅵ C语言的自加自减到底从函数哪里开始,从哪里结束
我们一行一行分析:
for (x = 5; x > 0; x--) //从x=5开始,当x>0的值为false时停止循环。每次循环后x自减。
if (x-- < 5) printf("%d", x); //x--的值就等于x,也就是说第一次是不执行的。这个语句同时也会将x自减。
else printf("%d", x++); //x++的值也等于x,但同时也会将x自增。第一次会执行这个语句,输出为x-1(等于4),因为在判断语句中x自减了。
所以,第一轮输出为4。
第二轮,x因为for循环自减了,此时x-- < 5也已满足,又因为在上一轮循环中加1,因此输出4+1-1-1=2;
第三轮与第二轮相似,不同之处在于没有执行printf("%d", x++),因此x的值减2,输出1
Ⅶ c语言程序设计 编程题:自增自减运算 和后置。
不知道你C语言怎么样。。我想应该不是很好吧。 所以先解释下自增自减运算符的意思,——(++)变量前表示变量先减1(+1)在使用变量的值。若运算符在变量后则表示先使用变量,然后变量再加1。。。下面举个例子
#include〈stdio.h〉
main()
{
int a=5;
printf(“%d”,a——,a++,——a,++a)}
Ⅷ C语言中自增自减的简单问题
第一题中间应该多了个加号,修改过后的运行结果如图。
然后第一题的++a是每一次都先加1,然后计算,而a++是计算完成之后才加一。
所以第一题其实是4+4=8;
第二题是3+5=8;
然后a都是加了2次,都是5.
Ⅸ c语言关于自增自减运算的问题
你看这个代码。先求的p结果是14 , 按我们算应该是13,但编译器是在编译过程中认为()里面的优先级的相同的,而且都是先自增,所以编译器就把先把这两个自增计算了,然后就是7+7了。
而下面是一样的,前二个也是同时进行。后面才进行也就是7+7+8,最后为22. (我以前也问过,老师用编译后的汇编代码给我解释的)
Ⅹ C语言自加自减问题
计算:从右往左,并输出到“缓冲区”。
1、缓冲区是一堆栈
2、第一步:处理后面的“i--”。8进入缓冲区,i=7。缓冲区:8 <-(指针)
第二步:处理“i++”。7进入缓冲区,i=8。缓冲区:7 8<-
第三步:处理”--i“。8进入缓冲区,i=7.缓冲区:8 7 8
第四步:处理“++i” 先自增1,然后8进入缓冲区,i=8 .缓冲区: 8 8 7 8
3、输出缓冲区数据(栈规则):8 8 7 8
另外自增 、自减 、还可能和编译器有关系 。
(10)编程范围自加自减扩展阅读:
后缀表达式 2级
postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,
postfix-expression -> identifier,成员访问,->号之前应为指针。
postfix-expression ++,后缀自增
postfix-expression --,后缀自减
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 复合初始化,C99后新增。