C语言中优先级和结合性 例如:*p++

作者&投稿:斐刘 (若有异议请与网页底部的电邮联系)
c语言类问题(有关结合性、优先级)~

s = a++ && b++ && c++;
只执行到a++ 所以只有a是1 其余都为0
原因为 逻辑运算符 && 的左边项为假时就不对右边项进行求值,
s = a++ && b++ && c++;
a自增1,但参与逻辑计算的是a = 0;
具体的你可以看看后缀++的用法

*(间接寻址符)和++(自增运算符)两个处于同一优先级,结合方向是自右向左,所以*p++,先执行p++运算,然后再取值。


当优先级相同的时候,结合性可以查阅运算符表,大多数跟算数运算一致。我就是将那张表打出来贴在显眼的地方,随时看看就记住了。

*p++,由于++和*的优先级相同,结合方向为自右至左。所以确实*p++等价于*(p++),而p++其实取值的时候还是取p的,是用过之后才能+1。所以*(p++)就是先执行p++得到p,然后执行*p,得到p指向的值,等这个运算结束了才能+1。你的那个理解应该是对于*(++p)的!

前两天回答过类似对问题了。
*P++等价于*(P++),其中括号指的是结合而不是优先运算!

P++意味着使用P之后再++,因为++在P之后,如果使++P,那么先让P加1(使1个长度单位或者步长,因为使数组元素对长度),再使用P。

所以*P++先取得*P对值参加运算再P++,而*(++P)先P++再取得*P。

一。其实C指针中【*】的优先级等于++(或--),对于这个问题,++或--是后缀,因此先进行【*】运算,即先运算*p的值,在给*p的值+1 。相当于P=&a,*p=a,*p++=a++ !
二。先算当然取决于优先性,当优先级相同时,按自然顺序运算,即【从左至右】,对于本问题,如果先P++,那么P所指的地址就相应改变,而不指向原值地址

先取值后++
就跟
a = 3;
b = a++;
而b还是等于3一个道理

书中在讲解的意思是 ,*p++ 是


C语言运算的优先级别和结合方向表是什么的?
C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。 而在一个运算量两侧的运算符优先级相同时, 则按运算符的结合性所规定的结合方向处理。 C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例...

C语言运算符优先级
C语言中的运算符运算顺序和结合性是编程中不可忽视的规则。运算符被分为15级,从1级的最高优先级到15级的最低优先级。在表达式中,优先级高的运算符会先于优先级低的运算符执行。如果两侧运算符优先级相同,那么按照规定的结合性进行操作。结合性有两种,左结合性(自左至右)和右结合性(自右至...

C语言优先级
15级优先级 左结合 , 逗号运算符

运算符的优先级别是什么
1.运算符优先级顺序:同一优先级的运算符,运算次序由结合方向所决定的。简单的记就是:! >算术运算符>关系运算符>&&>||>赋值运算符。结合性: 2、13 、14是从右至左其他都是从左至右。2.优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于...

c语言中! x和y的优先级是高低啊?
优先级:自减运算符>逻辑非运算符>逻辑或。基本的优先级需要记住:指针最优,单目运算优于双目运算,如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7。逻辑运算最后结合。简单记就是:! > 算术运算符 > 关系运算符 > && > || ...

c语言中的运算符优先级顺序有什么规定?
c语言运算符优先级从高到低的顺序依次如下:优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。优先级与求值顺序无关。如a+b && b...

c语言运算符优先级从高到低的顺序?
c语言运算符优先级从高到低的顺序依次如下:优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。不同类型的运算符之间也有相应的优先级...

...怎么确保正确的优先级和结合性「编译原理」
左递归是指在二元表达式语法规则中,如果产生式的第一个元素是它自身,程序会无限递归,如“加法表达式 + 乘法表达式”。优先级和结合性是计算机语言中与表达式相关的核心概念,涉及语法规则的设计。通常,我们使用上下文无关文法和巴科斯范式(BNF)来书写语法规则。为了确保正确的优先级,我们通常设计语法...

C语言中的运算符的优先级怎么排序?
归纳各类运算符【高到低】:初等运算符【()、->、.】 G1 单目运算符G2 算术运算符(先乘除【取余】,后加减) G3,4 位运算符【<< >>】 G5 关系运算符G6,7 位运算符【递减& ^ |】 G8,9,10 逻辑运算符(不包括!) G11,12 条件运算符 G13 赋值运算符G14 逗号运算符 G15。

C语言中++、--结合性是怎样的
1、++ : 优先级为2,结合规则:自右至左。2、|| 和 && :优先级分别在12和11,结合规则为:自左至右。3、++,--是算术运算符,而 ||, && 是逻辑运算符。4、实际上++x || ++y && ++z;是一个逻辑表达式,整个运算过程遵从的是 || 和 && 的结合规则;而在逻辑的每一个条件中(++x...

张湾区17645713587: C语言中优先级和结合性 例如:*p++ -
程光雷卡: *p++,由于++和*的优先级相同,结合方向为自右至左.所以确实*p++等价于*(p++),而p++其实取值的时候还是取p的,是用过之后才能+1.所以*(p++)就是先执行p++得到p,然后执行*p,得到p指向的值,等这个运算结束了才能+1.你的那个理解应该是对于*(++p)的!

张湾区17645713587: c语言*p++是什么意思?
程光雷卡: *p++就是先取出指针p指向的地址单元的数据,之后再将该值加1.由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据.若果是*(p++),那么就是先将地址加1,之后取出新地址中的数据.在c语言中 ++的优先级大...

张湾区17645713587: c语言:*p++的结合性自右向左,为什么是先取*p作为表达式的值,再p++(从左开始运算)
程光雷卡: 可以这么考虑!同学你好: 这里是运算符优先问题,*的优先级高,++低,所以先执行*p在执行p++.如果是*++p那么 先执行++p在执行*(++p) 希望你能采纳

张湾区17645713587: C语言*p++是什么意思? -
程光雷卡: 在c语言中 ++的优先级大于* i=*p++ 相当于 i=*(p++),又相当于 i=*p; p++; 但并不像bkldhldbk所说"*p++就是:p自身加1后取该指针所指的值" .

张湾区17645713587: c语言中,*(++p)++的含义 -
程光雷卡: 这个涉及到运算符的优先级问题,在这个表达式中,优先级顺序为:() > * 和 ++,而* 和 ++是同优先级的,同优先级时,看结合性,而* 和 ++是自右向左的结合性的,所以, (++p)的结果是右值,而后缀++的操作数需要是左值,但是没有左值啊,*(++p)++;编译的时候会提示“左值需要增量操作数”的错误提醒,所以这条表达式是有问题的. 下面是示例程序: #include <stdio.h> int main() {int a[4]={0,1,2,3};int *p=a;int x=0;x=*(++p)++;printf("(*(++p)++) = %d\n", x);return 0; }

张湾区17645713587: C语言计算的优先性 -
程光雷卡: 运算符 结合性 ------------------------------------------------------------------------- () [] -> . 左->右 ! ~ ++ -- - (type) * & sizeof 右->左 * / % 左->右 + - 左->右 << >> 左->右 < <= > >= 左->右 == != 左->右 & 左->右 ^ 左->右 | 左->右 && 左->右 || 左->右 ?: 右-...

张湾区17645713587: C语言中*p++该该怎么理解,*和++是同一运算级,从右向左啊,是不是p中的地址自加后再指向另一个变量?
程光雷卡: 间接引用操作符*和前缀递变(++和--)操作符的优先级是相同的,但是后缀递变操作符的优先级是高于间接引用操作符的,所以: *p++相当于*(p++) 结合性是用于确定同一优先级操作符的运算顺序的,比如: *++p 由于*和前缀++的优先级相同,而且结合性是从右向左的,所以在计算时先算右边的,即它相当于*(++p);

张湾区17645713587: 求问c语言中*和++那个优先级别高呀 -
程光雷卡: *有两种表示 1个是指针运算 1个是乘 当*代表指针运算的时候 *和++的优先级是相同的,只不过它们与变量的结合性是从右向左来算的 假如 有定义int *p; *p++; 那么先算++ 在算* 当*代表乘的时候优先级是低于++的

张湾区17645713587: C语言运算符的结合性 -
程光雷卡: 运算符:用于c语言中执行程序代码运算

张湾区17645713587: C语言上的符号优先级是怎样的? -
程光雷卡: 1级优先级 左结合 () 圆括号 [] 下标运算符 -> 指向结构体成员运算符 . 结构体成员运算符 2级优先级 右结合 ! 逻辑非运算符 ~ 按位取反运算符 ++ 前缀增量运算符 -- 前缀增量运算符 + 正号运算符 - 负号运算符 (类型) 类型转换运...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网