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

c语言中自增有括号吗

发布时间: 2022-11-27 02:59:30

❶ 在c语言里面,大括号里面的自增符号,是先自增完再使用数值,还是

自增运算符后缀,表达式值为操作数的原值,最后的副作用是操作数的值+1
自增运算符前缀,表达式值为操作数的+1后的值,最后的副作用是操作数的值+1

❷ C语言自增自减运算符用法

C语言的前置++和后置++,称为自增运算符
前置--和后置--称为自减运算符,下面以自增运算符的区别来加以介绍,自减类似

如果单独写 自增运算符为一个语句,二者没有区别
++i; 和 i++; 都是让i+1赋值给i
但是如果把自增运算符写入到另外表达式中二者就有很大区别了

例如
i=5;
j=i++;
执行后i为6,j为5
i=5;
j=++i;
执行后i为6,j为6

❸ c语言中的自加问题:q=(++j)+(++j)+(++j)

验证就是22.想了一会,发表下自己的看法。
我觉得多个自增在一起,只允许配对原则。
也就是说每次只有两个自增的时候才能满足先算括号;
先说q=(++j)+(++j)+(++j)=((++j)+(++j))+(++j)
此时第一个和第二配对,先算括号自增,j=7,在求和为7+7=14。
此时就是14在与(++j)配对。先算括号自增j=8,在求和得14+8=22.

如果是4个(++j),则22与(++j)配对,先算括号自增j=9,在求和得22.+9=31;
5个就是41,
6个就是52…………
同理可以推出N个的情况,初值为a,则N个前自增后的和为(a+2)*N+(0.5)*(N-1)(N-2);
(这个公式推了我好久)
如果正确的话就给分;

❹ C语言关于自增的问题

标题可能有误,如果是C++的话,一切没问题;但是C语言中,如果按现在编译器一般支持的ANSI C89/ISO C90标准,以上ABCD是全错的(原因下面再讲);如果是C99标准,那么同C++。
C/C++中一个表达式可以是左值(lvalue),表示在实现中具有对应的运行期空间。从一般的C/C++实现而言,等价于保证在程序运行时必定存在一段内存中保存了左值的值(类型不会被保存)。(lvalue的l表示location之意,暗示可以作为一元操作符&的操作数;或者left,暗示这个表达式可以作为赋值操作符=的左操作数。)对于前置或后置的++、--,同赋值操作符=同样,要求操作数必须是一个左值。而算术表达式和后置++、--表达式都不是左值,编译器无法确定改写这个值需要的指令作用的存储器位置从而实现它的值进行++、--操作,因此ACD会引起编译错误。C++中前置++、--的返回值是左值,因此只要B选项中p是在所在作用域中定义过的非const的可访问的变量,就是正确的表达式。
C语言中,括号()不改变表达式的左值属性;一元运算符*、下标运算符[]返回左值;序列运算符(逗号表达式)返回左值但是deprecated(可能会被标准的以后版本废除);其它如函数调用表达式,自增、自减、算术、逻辑、比较、赋值表达式等返回的都不是左值,所以ABCD都错。
====
[原创回答团]

❺ C语言运算符操作(自增自减)

按照编译器原理解析的话,这个句子应该这样解析的,(k++) + ( j ) = 8, 这里我们不说优先级的问题,你可以查下~ 为什么你算出是9呢,我觉是你忘记了一个重点就是k++,这个是后加,也就是在整个表达式结束后k才加1,而在计算过程中k还是算原值5的,一般来说自加自减在单一的表达式中无先后之分,但是一旦到了复杂表达中就有了先后之分了

❻ c语言里,如果后缀自增在括号里

在引用的表达式之后再++,举个例子:
a=1;
b=(a++);
运行的结果b=1,a=2
但如果如下
a=1;
a++;
b=a;
则b=2,a=2

❼ C语言自增自减问题

其实呢,各个编译器对这个问题的处理方式是不同的。
要弄明白这个问题,首先得明确两点:
1、括号运算符的优先级是最高的,高于自增自减运算和加减乘除运算。因此括号内的表达式首先计算;
2、++i这个自增表达式的意思是i的值加1,然后再使用i。(++i)就表示先把i的值加1,然后再将i用在运算中。
因此。p=(++x)+(++x)+(++x);这个语句最终在本质上是p=i+i+i。而不是你认为的每次算出括号表达式中的结果然后依次相加。这一点非常重要。

而至于最终的p=i+i+i中i的值是多少呢,不同的编译器之间就产生了分歧。
其中vc和gcc认为按照加号运算从左到右的运算顺序来。也就是先计算第一个加法,然后再计算第二个。具体的过程就是:
先计算第一个(++i),这个时候i自增成6,得到i;
再计算第二个(++i),这个时候i自增成7,得到i;
现在i=7了,计算第一个加法(++x)+(++x),也就是i+i,即7+7=14;结果存在临时变量temp中;
然后计算第三个(++i),由于之前i=7,因此现在i自增成8,得到i;
最后计算第二个加法(++x)+(++x)+(++x),也就是temp+i。于是就是14+8=22。
而在TC中则认为必须先把高优先级的计算完再直接计算低优先级运算。于是就是直接先将i进行三次自增,i变成8。然后直接计算i+i+i,所以得到24。

❽ C语言有关自增运算符的问题

#include <stdio.h>

int main()
{
int a=2,b=-1,c=2;
if(a<b)
{ //加个大括号让你看明白点·~~~~~ 括号里面的if和else是一对。且都是在 if(a<b)成立后才能
if(b<0)
c=0;
else c++;
printf ("%d\n",c);
}

return 0;
}

❾ c语言运算符自增

不同C语言版本不一样,所以运算顺序也不同.有的C版本是按照三个括号是一等级计算的,也就是说三个括号中的内容同时运算,而有的版本则从左到右运算.因此,希望你不要太追究这个问题.为了增强程序的可移植性,像上述问题一般是这么解决的:int x=8,y;
y=++x;
y=y+(x++);
y=y+(++x);