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

c语言自增1是遇到分号时自增吗

发布时间: 2022-08-30 16:09:49

c语言中,i++的问题 请问什么时候I++自增

关于自增自减的问题 ,其实是执行完i++这个表达式之后i就已经自增一了,你写的这个是个逗号表达式,它是按从左至右的顺序执行,但是输出的是表达式3,(逗号表达式可以写为 : 表达式1,表达式2,表达式3;)如果输出这个逗号表达式的值的话就是输出b+4的值,
但是再执行完这条语句之后下面如果再用到i的话 i 就是自增后的值

㈡ 关于C语言增量符号使用

这个问题虽小,但是学问挺大!!!@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@
【第一条】、关于自增自减运算,很多书籍没有把问题讲清楚,在C语言里是这样的:
1.后置运算:k++表示先运算,后自加。
意思是遇到k++了,我先把当前的k的值拿来参加运算,后面再去管它的自加。
那么,【“后面”后到什么程度呢?要后到当前的语句执行完,即遇到分号;表示
语句执行完了,所以k才自加1。】
2.前置运算:++k表示先自加,后运算
这个意思就是遇到++k了,先把k的值加了1,再往后执行别的。
掌握好这两点,k--和--k也是一样的道理。
【第二条】、对于多个自增自减运算组合时,在不同的编译器上运行时会有不同的结果。
但是在C语言里的组合顺序如gaozhen所说[“对于++
,--
C编译系统在处理时尽可能多的(
自左往右)将若干个字符组成一个运算符”]。
结合这两点,我们就可以来解决这个问题了。
首先,根据【第二条】,结合顺序是a=a+++b+++c;等价于a=(a++)+(b++)+c;
其次,根据【第一条】,【“后面”后到什么程度呢?要后到当前的语句执行完,即遇到
分号;表示
语句执行完了,所以k才自加1。】
那么,就可以得到结果了。
先是不管自加的事情,取a、b的当前值(都是1)和c(值为1)相加赋给a,即a=1+1+1=3;
然后遇到分号语句结束时再去管自加1,即a+1,b+1。而a的当前值已经是3了,故
a=a+1=4;b的当前值是1,故b=b+1=2;
所以本题答案的正确结果是
4.

㈢ C语言自增自减

在表达式里,像题目这种++,--。在变量前面就是先自增自减再取变量值。在变量后面先取变量值再自增自减。
比如:j=i++;意思就是先取i的值赋值给j,以后i再自增。后面代码也是这个意思。你可用这个思路跟着代码走一遍。

㈣ 关于C语言自增运算符的问题

运行以下代码,可能会帮你理解
intmain()
{
intcount=0;
printf("%d%d%d ",count++,count++,count++);
printf("%d ",count);//后缀,先使用变量,待本语句结束后(遇到分号后),其值才会真正进行改变!

count=0;
printf("%d%d%d ",++count,++count,++count);//printf参数输出,从右向左(在我的机器上是这样,也许不同机器有不同),前缀,先改变变量,后使用变量
printf("%d ",count);
count=0;
printf("%d%d%d ",count++,++count,count++);
printf("%d ",count);
return0;
}

㈤ C语言自增运算

k=(i++)+(++i)+(i++);
你可犯了个大的错误啊,你要想得出正解就要这样定义
int r, s, t;
r = ++i;
s = ++i;
t = ++i;
k = r + s + t;
因为分号是一个顺序点,C编译器k=(i++)+(++i)+(i++); 的编译顺序是任意的,它要,理论上所有++操作和赋值操作的副作用都要在分号之后才生成。但是这一点并不是强制编译器必须要等到分号结束之后才执行赋值操作,只是规定相邻两个顺序点之间的表达式求值所产生的副作用只有等到下一个顺序点结束才是确定的。而在这个顺序点结束之前,编译器对位于该个顺序点和前一个顺序点之间的表达式以任意顺序求值,k=(i++)+(++i)+(i++); 表达式都违反了C语言有关顺序点的规定,编译器给出的值也具有一定的任意性,没有人能确切地告诉你它们的值,你只能去问编译器了。所以我建议你不要这样写,以后做软件可要注意啊!

㈥ 关于c语言自增运算符的问题。

a++ 就是这个值在运算时是a 在运算后变成了a+1
++a 就是这个值在运算时是a+1
在后的是先运算后加减
在前的是先加减在运算

a++>3 不成立

c=a++;
c>3不成立
先后就只在一个语句里看,有分号了就是下个语句了

这个你还是追问呗=。=这样多累啊。
就是说比如 a++ >3 ;这个 在这个语句中他是先看a是不是大于3 结果她不成立,然后给a加1
那么
再比如c=a++; 这个就是给c带入了a的值就是3 然后给a加1 然后判断c>3那么c是等于3的。而这时的a是等于4的。。。刚刚写错了哈,2个都是不成立的

不成立c的赋值在a变成4前完成的。除非你再给他赋值成4一次。

是有问题=。=我还以为你只是大致写下看看呢=。=你的理解上有问题,打字很难说,你要么找个会的同学口头上说,要么去问问老师。

㈦ c语言 ++问题

个人理解:++a与a++,到底什么时候a会自增1,是看这条语句的结束的,也就是;(分号所在的位置),++a是a先自增1之后再执行这条语句,而a++是这条语句执行完毕后即遇到;(分号)结束时,a再自增1;循环什么的,只要是在分号之后的,就对a的自增没啥影响。
你看能理解不。

㈧ C语言中自增运算符的困惑

++ 的运算等级确实高于 -;
但是如果是 i++的话,他的自增要等到遇到第一个分号 ;时候才自增,就是当前语句结束后,i才会自增,在这个语句结束前,它都是原来的值。
如果是++i的话就是先自增,这时候就能体现出++的运算等级高于-了;
如果你分不清,就记住如果++在后就是等该条语句结束后再自增,++在前就是先自增然后再运算。

㈨ 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

另外自增 、自减 、还可能和编译器有关系 。

(9)c语言自增1是遇到分号时自增吗扩展阅读:

后缀表达式 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后新增。