Ⅰ c语言程序设计自增自减问题
n--是先使用n的值,用完之后n=n-1,
--n是先做自减,再使用n的值,
因此,判断顺序是,
n=4,while(4),(n--)n=3,
(--n)输出2,while(2),(n--)n=1,
(--n)输出0,
如果还是不太清楚,再提出。
Ⅱ 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
另外自增 、自减 、还可能和编译器有关系 。
(2)c语言自增自减题扩展阅读:
后缀表达式 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后新增。
Ⅲ C语言自加自减问题~~~~
我举个例子吧,你看看:
#include<stdio.h>
void
main()
{
int
i=2;
printf("%d,%d,%d,%d,\n",i++,++i,i,i++);
printf("%d\n",i);
}
首先,应该说明的是在不同的编译环境中结果是不一样的。
关于本段代码在VC++6.0中的规则如下:
1、printf函数的执行顺序是由右到左的
2、前自增运算符(++i)先加1,再使用i,此时i已经加了1;
3、后自增运算符(i++)先使用i,再加1,***注意这里是关键所在,VC++6.0后自增运算是要在整条语句结束以后才自加1的,(VC++6.0比较变态)***
所以:
printf("%d,%d,%d,%d,\n",i++,++i,i,i++);
从右往左运算:
i++得到2(i=2,后加1在整条语句执行完才进行,这里先记下)
i还是2
(i=2,原因见上一行)
++i得到3(i=3,先加1,后使用)
i++得到3(i=3,后加1在整条语句执行完才进行,这里先记下)
所以输出结果为:3,3,2,2
然后计算刚才的两次后自增运算后,i=5
printf("%d\n",i);
所以,结果是5
Ⅳ C语言中自增自减的简单问题
第一题中间应该多了个加号,修改过后的运行结果如图。
然后第一题的++a是每一次都先加1,然后计算,而a++是计算完成之后才加一。
所以第一题其实是4+4=8;
第二题是3+5=8;
然后a都是加了2次,都是5.
Ⅳ c语言关于自增自减的问题
计算:从右往左,并输出到“缓冲区”。
2.缓冲区是一堆栈
3.
第一步:处理后面的“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
4.输出缓冲区数据(栈规则):8
8
7
8
另外自增
自减
还可能和编译器有关系
淡定
语法问题
不要太纠结
Ⅵ 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
另外自增 、自减 、还可能和编译器有关系 。
(6)c语言自增自减题扩展阅读:
后缀表达式 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后新增。
Ⅶ C语言 自增自减问题
教你个方法,当--或++在后时,就将那个操作放到表达式的后面,
例如
m=(x--)+(x--);
等价于
m=(x)+(x);
x--;
x--;
同理,当--或++在前时,就将那个操作放到表达式的前面
m=(--x)+(x++);
等价于
x--;
m=(x)+(x);
x++;
所以
y=fn(a,++a);
等价于
a = a + 1;
y=fn(a,a);
所以,选D
Ⅷ C语言自增自减运算符我总是搞不明白,图中这三道题我就又错了,希望有会的人能给我解答一下
6、x<y?x++:y++这个表达式的意思是 如果x<y为真 就执行x++ ;如果x<y为假 就执行y++ 这里显然是执行y++ 返回值是2
希望对你有帮助
----满意采纳奥----
4、
首先 i++==1&&(++j==3||k++==3) 是一个逻辑表达式
i++==1&&(++j==3||k++==3) 分为两部分
i++==1 和 (++j==3||k++==3)
他们的关系是 并且的关系
所以 两部分都会被执行
i++==1
是先 判断i是否等于1 (因为++在后面) 此时i=1;
在这句话执行完之后i=2
然后执行第二部分
(++j==3||k++==3)
又分为两部分
++j==3 和 k++==3 两部分
这两部分是 或者的关系
如果第一部分满足条件 就不执行后面的
如果第一部分不满足条件 就执行后面的部分
++j==3
是j先自己加1然后判断j是否等于3
这部分的结果为真
所以后面的部分不执行
最后的结果为 i=2 j=3 k=3
Ⅸ [c语言]自增、自减运算问题
四,关于i++,你完全可以理解为i的值被别的操作用了之后,自身再自增1。在真实的代码里,编译器会增加一个临时变量,比如一个寄存器,用来保存自增之前的值,这个值用于传递给printf函数,而在调用printf之前,i可能已经自增1了。因为有临时变量,所以两个操作都顺利完成了。
六,负号和++优先级相同,但在表达式中结合的方向是从右到左。即对于-i++,先执行i++,再执行-i。按照上述四的说法,编译器会给i生成一个和其自增之前相等的临时变量,用于作负运算。所以-i为8,i在++后为9,各不干扰
++应该算个难点,自己上机多感受一下,再把运算符的优先级顺序大致记一下,以后程序写多了,自然就慢慢懂了
Ⅹ 一个c语言自增自减题目不会做。。
if(表达式) 如果是表达式=0 为假, 表达式不等于0为真。
c=a+b ;这是赋值语句,返回最左边的值,这里是c .
x--; 后缀,先运行该语句,后自减
--x; 前缀,先自减,再运行该语句。
这里 x--<5 . 这里可以看着 ( x<5, x=x-1) 这么一个整体 所以 当输入5时 ,不运行printf("%d\n",x); 。但是x还是得自减1 ,变成 4. 再到printf("%d\n",x++); x++后是5.但是输入扔是x=x+1前的值 ,为4