自增(减)运算与正负号

main(){

int i=8;

printf("%d\n",++i);

printf("%d\n",--i);

printf("%d\n",i++);

printf("%d\n",i--);

printf("%d\n",-i++);

printf("%d\n",-i--);

}

9
8
8
9
-8
-9

不明白最后的-8 -9怎么来的
其他都知道了……

总之就是自增自减遇到负号就不知道怎么算了

那位大大帮帮忙……
感激不尽……

自增运算符与自增减运算符的优先级都高于一元负号的优先级

所以-i++就相当于是-(i++),即是对i先后自增,然后取它的相反数

printf("%d\n",i--); 这条语句,使得i变为了8,所以执行

printf("%d\n",-i++); 时,先执行i++,i++的值是8,取反,则为-8.后面的同理

但是你要明白,自增是有副作用的,因为i++之后,i的值变为了9,但是i++的值是8

只要记住:前缀加返回自加之后的值,后缀加返回自加之前的值
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-07
记住在这里:自减和自加要打印完再自加自减!
printf("%d\n",i--);

printf("%d\n",-i++);

printf("%d\n",-i--);
执行第一句话时i=9,打印完i再减1,所以执行第二句就是打印-8,这里i再++,就是i=9,执行第三句就是打印-9,i再--,就是i到程序结束之前是8.本回答被提问者采纳
第2个回答  2009-03-07
你需要知道,后自增操作符优先级非常高,高于前自增操作符和一般的算数运算符。
这样,就是-(i++) 明白了吧~

自增(减)运算与正负号
自增运算符与自增减运算符的优先级都高于一元负号的优先级 所以-i++就相当于是-(i++),即是对i先后自增,然后取它的相反数 printf("%d\\n",i--); 这条语句,使得i变为了8,所以执行 printf("%d\\n",-i++); 时,先执行i++,i++的值是8,取反,则为-8.后面的同理 但是你要明白,自增...

c语言问题!关于自加自减和运算方向 i = 1; i = (++i) + (++i) ; 结...
++i 是先将i 增1 然后再引用到表达式中进行运算,自增自减 与“!、~、+、-、*、&、sizeof、(类型名)”运算符同级,且只比“()、[]、->、.”运算符的运算级别低。这里的+、-是正负号运算符 i = (++i) + (++i) 等同于 i=1 i=i+1 ; i=2 ; i=i+1;i=3 i=3+...

c语言中运算符的优先级是如何排列的?
第一级:圆括号【()】、下标运算符【[]】、分量运算符的指向结构体成员运算符【->】、结构体成员运算符【.】。第二级:逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++ --】、负号运算符【-】、类型转换运算符【(类型)】、指针运算符和取地址运算符【*和&】、长度运算符【...

计算机中的运算符有哪几类?
运算符的优先级(由高到低)括号() []2.正负号 + - 3.自增自减非 ++ -- !4.乘除取余 *\/ 5.加减 + - 6.移位运算 << >> 7.大小关系 > < <= >= 8.相等关系 = != 9.按位与 & 10.按位异或 ^ 11.按位或 | 12.逻辑与 && 13.逻辑或 || 14.条件运算?:15.赋值运算 ...

编程中的括号,逗号之类的在什么情况下用?
C语言符号全集合 运算符的种类 C语言的运算符可分为以下几类: 1.算术运算符 用于各类数值运算。包括加(+)、减(-)、乘(*)、除(\/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。 2.关系运算符 用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于...

C语言中,以下运算符优先级最高的是__
!(非)的优先级最高。运算符基本的优先级:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.逻辑运算最后结合。

单目运算符有哪些
1、根据操作数的数量,运算符可以分为单目运算符、双目运算符和三目运算符。单目运算符:只有一个操作数的运算符,例如正负号、逻辑非运算符、按位取反运算符、自增自减运算符等。双目运算符:有两个操作数的运算符,例如加法、减法、乘法、除法等。三目运算符:有三个操作数的运算符,例如条件运算...

单目,双目运算符怎么回事?前置和后置的区别C++
目就是操作数,单目就是一个操作数的操作符,比如正负号,++ --,作用域操作符;双目就是两个操作数的。前置自增\/自减是先将自身变量改变在参与表达式运算,而且前置运算返回的是左值也就是变量,比如++i = 6,而后置的是先用本来的数值参与表达式运算,再改变其自身的值,并且后置运算返回的是右值...

C++中前置递增运算子和后置递增运算子的区别
单目,双目运算子怎么回事?前置和后置的区别C++ 目就是运算元,单目就是一个运算元的操作符,比如正负号,++ --,作用域操作符;双目就是两个运算元的。前置自增\/自减是先将自身变数改变在参与表示式运算,而且前置运算返回的是左值也就是变数,比如++i = 6,而后置的是先用本来的数值参与表示式...

c语言中逗号运算符的功能和使用方法
;是首先把y赋值为3,把y递增为4,然后把4加上2,把结果6赋值给z,接下来把z加5最后把x赋为结果值11。2、注意事项:逗号运算符( , )是C语言运算符中优先级最低的一种运算符。二、其它用法:1、在for里面的应用:int i;int j;for(i=0,j=0;i<5;i++,j++)2、当分隔符:int i,j;...

相似回答