各位大哥,谁能讲讲c语言中关于自加自减,结合性以及强制类型转换的问题啊???

发布时间:2024-05-15 00:15 发布:上海旅游网

问题描述:

最好能讲的朴实点~~举例说明下!

问题解答:

自增分前缀自增和后缀自增。无论是什么,执行自增都有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。

()里面即是你要转换的类型。

1.主要是i++,++i的问题,i++的意思是先用后加 比如:
int i=5;
int a=i++;那么a还是等于5,但是如果下面还有一条语句a=i,那么这个时候a=6了,因为i在用完以后就加了1了;
++i是先加后用,比如:int i=5;
int a=i++;那么a应该是6了
2.结合性就是运算符号的优先级别问题,比如先乘除后加减,有一个表,你背诵就可以了!
3强制转换的问题就是可能造成错误,因为强制转换后有些位会丢失,当然有些强制转换还是系统自动转换的,这样错误就更难发现了

最后:学习是要慢慢来的,不是一下子就学会的,只要你努力就会有收获的,加油!!!

自加自减很简单...
i++;代表这条语句是在i原来的值上加1(i--是减1)..
比如int i=1;
a=i++*++i;记住i++是一条语句的最后才执行的i自加;算法是这样的a=i(++)*2;a=4;但是i=3;

强制的话 记住公式 列:(int)a;(记住是int这里加括号.)

基本知道这些就OK了

热点新闻