当前位置:首页 » 编程语言 » c语言自增自减题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言自增自减题

发布时间: 2022-09-13 12:58:03

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