C语言里的单目运算符 表达式-i++ 和*p++ 单目运算符结合顺序是从右向左的,为什么第一个表达式可以换为
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/28 14:48:05
C语言里的单目运算符 表达式-i++ 和*p++ 单目运算符结合顺序是从右向左的,为什么第一个表达式可以换为
-(i++) 而第二个却要转换为(*p)++,
从右向左结合,到底是以什么为准,怎么个从右向左结合
第二个写错了,应该是 -i++转换成-(i++)就可以,而*p++ 却要先算*p 然后p++
为什么不能转换成*(p++)和i的那个一致呢
-(i++) 而第二个却要转换为(*p)++,
从右向左结合,到底是以什么为准,怎么个从右向左结合
第二个写错了,应该是 -i++转换成-(i++)就可以,而*p++ 却要先算*p 然后p++
为什么不能转换成*(p++)和i的那个一致呢
所谓的结合行,是在优先级相同的情况下才自由向左(或者自左向右的),在单目运算里面++比-和*优先级都要高.你列的式子里,第一个是对的,第二个应该是*p++就等于*(p++),相当于取p所指地址的内容,然后p自增,增加的大小等于所指类型的字节数
再问: 第一个是对的,但是第二个 *p++ 就是先让p和*结合 然后p和++结合,代码运行了,你说错了,我不明白的是 为什么他不能和第一个一样像i 先和++结合,然后算负号
再答: 我没说错啊,给你看一下我运行的情况吧。 printf里的参数是从右向左计算的,所以先算(*p)++,即返回a[0]的值,然后将a[0]自增;然后再算*p++,此表达式先算p++,返回当前p值,再将p自增,所以这里等于取的当前a[0]的值;最后*p就取的a[1]的值。
再问: 第一个是对的,但是第二个 *p++ 就是先让p和*结合 然后p和++结合,代码运行了,你说错了,我不明白的是 为什么他不能和第一个一样像i 先和++结合,然后算负号
再答: 我没说错啊,给你看一下我运行的情况吧。 printf里的参数是从右向左计算的,所以先算(*p)++,即返回a[0]的值,然后将a[0]自增;然后再算*p++,此表达式先算p++,返回当前p值,再将p自增,所以这里等于取的当前a[0]的值;最后*p就取的a[1]的值。
C语言里的单目运算符 表达式-i++ 和*p++ 单目运算符结合顺序是从右向左的,为什么第一个表达式可以换为
C语言中什么是单目运算符,它们的结合规律是怎样的
求助C++几道基础题1、下列运算符中,结合性从左到右的是()?A.三目 B.赋值 C.比较 D.单目2.下列表达式中,具
表达式:10+‘a'+i*f-d/3 在C语言中的运算顺序是怎样的?
c语言 的 运算和表达式谁会
C语言.运算符和表达式
c语言里的四则运算给你一个简单的四则运算表达式,包含两个实数和一个运算符,请编程计算出结果,表达式的格式为:s1 op
C语言运算符与表达式的几个题,
表达式语法扫描 从键盘输入一个表达式,判断它是否符合下面的语法规则:(1) 表达式只能由单字母、运算符
c语言中条件表达式的运算顺序不应该是自左向右吗?为什么a
表达式a=*p++中,p为一指针,该表达式运算的正确顺序应该是?
C语言中 怎样理解三目运算符(条件运算符)的右结合性?